Div不会被过滤为:隐藏时显示:无;作为样式附加

时间:2010-05-21 09:51:14

标签: jquery css jquery-selectors

我有一些简单的HTML:

<div id="selectorContainer">
    <div id="chainedSelector" style="display: none;"><% Html.RenderPartial("ProjectSuggest/ChainedProjectSelector"); %></div>
    <div id="suggestSelector"><% Html.RenderPartial("ProjectSuggest/SuggestControl", new SuggestModeDTO{RegistrationMode = Model.RegistrationMode}); %></div>
</div>

这是两个控件容器。我有jQuery代码在显示这些之间进行切换,但是我需要存储为上次用户登录时使用的cookie(即哪一个是可见的)。存储cookie不是问题。

问题在于,由于某些原因,我无法使用.is(“:hidden”)检测哪一个是隐藏的,并且无法使用.is检测哪一个是可见的(“:visible” )

当我使用这两个选择器时,我总是得到两个选择器。两个人都有“真实”和“真实”,尽管有人显示:无;而另一个没有。请注意,它们不会放在隐藏的容器内,否则会隐藏它们,因此没有任何隐藏的祖先容器。

任何人都可以解释为什么会发生这种情况吗?

包含获取Id和获取所选ID(目前已损坏)的源代码的jQuery代码:

getChainedSelectorId: function() {
    return "#chainedSelector";
},

getSuggestSelectorId: function() {
    return "#suggestSelector";
},

getSelectedSelector: function() {
    alert($(this.getChainedSelectorId()).is(":hidden"));
    alert($(this.getSuggestSelectorId()).is(":hidden"));
    var selected = ($(this.getChainedSelectorId()).is(":visible") ? this.getChainedSelectorId() : this.getSuggestSelectorId());
    alert(selected);
    return selected;
},

提前致谢。

2 个答案:

答案 0 :(得分:3)

我刚刚用上面的html运行了以下代码,它运行正常:

<script type="text/javascript">
testobj = {
getChainedSelectorId: function() {
    return "#chainedSelector";
},

getSuggestSelectorId: function() {
    return "#suggestSelector";
},

getSelectedSelector: function(){
alert($(this.getChainedSelectorId()).is(":hidden"));
    alert($(this.getSuggestSelectorId()).is(":hidden"));
    var selected = ($(this.getChainedSelectorId()).is(":visible") ? this.getChainedSelectorId() : this.getSuggestSelectorId());
    alert(selected);
    return selected;    
    }
}
$(function() {
    testobj.getSelectedSelector();
});


</script>

在部分视图中渲染了什么?

答案 1 :(得分:0)

:hidden用于CSS属性visibility:hidden

我想......