我有一些简单的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). cookie的存储不是问题.
问题是我由于某种原因无法使用.is(“:hidden”)检测到哪个是隐藏对象,也无法使用.is(“:visible”)检测到哪个是可见对象.
当我使用这两个选择器时,总是会得到两个选择器.两者都显示为“ true”和“ true”,尽管其中一个显示:另一个没有.请注意,它们没有放置在隐藏的容器内,否则会隐藏两者,因此没有任何隐藏的祖先容器.
谁能解释为什么会这样?
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;
},
提前致谢.
最佳答案
我只用上面的html运行了以下代码,它运行良好:
<script type="text/javascript">
testobj = {
getChainedSelectorId: function() {
return "#chainedSelector";
},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>
部分视图中呈现了什么?