【发布时间】:2010-05-21 18:17:13
【问题描述】:
我有一些简单的 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(即哪个是可见的)。 cookie 的存储不是问题。
问题是我由于某种原因无法使用 .is(":hidden") 检测到哪一个是隐藏的,并且无法使用 .is(":visible" 检测到哪个是可见的)
当我使用这两个选择器时,我总是同时得到。两者都为“true”和“true”,尽管其中一个具有 display: none;而另一个没有。请注意,它们不会放置在隐藏容器中,否则会隐藏两者,因此没有任何隐藏的祖先容器。
谁能解释为什么会发生这种情况?
jQuery 代码包含获取 ID 和获取所选 ID 的源代码(目前已损坏):
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;
},
提前致谢。
【问题讨论】:
标签: jquery css jquery-selectors