我试图有一个可扩展/可折叠元素的类别索引,当用户单击一个类别时,它会以“catSel”的 id 重建。
问题是当用户点击一个<li>
并且'catSel' id被添加到它时,它仍然会受到 .hide(); 的影响。我不希望这样。我应该注意,如果用户单击一个<ul>
元素,它不会受到 .hide(); 的影响,我可以让它工作。
我真正想要的是,如果一个<ul>
或其任何<li>
元素的 id 为“catSel”,<ul>
则不会受到 .hide(); 的影响。
这是代码和示例链接,您可以看到<ul>
未展开但其中一个<li>
孩子的 id 为“catSel”
编辑:抱歉解释不好,我仍然不能很好地解释它,但我想要它,以便如果它的一个<ul>
或一个子<li>
元素有一个id="catSel"
它不会受到$('ul.catList:not(.level-0) li:has(ul):not(#catSel)').children('ul').hide();
.
更新:
我添加了这段代码:
// If an elementwith its id="catSel" show all of its parents and also update the parents class
$('#catSel').parents().show();
$('#catSel').parents().removeClass('plusimageapply');
$('#catSel').parents().addClass('minusimageapply');
现在它似乎正在按照我想要的方式工作。感谢所有试图理解我的问题并帮助我的人。
jsfiddle:http: //jsfiddle.net/nNR9W/
HTML:
<li>
<a href="foo">Catalog Section 4</a>
<ul class="level-1 catList"><li class="plusimageapply">
<a href="foo">Quick Disconnects</a>
<ul class="level-2 catList" style="display: none; ">
<li id="catSel" class="selectedimage">
<a href="foo">Foster</a></li>
<li class="selectedimage">
<a href="foo">General Pump</a>
</li>
<li class="selectedimage">
<a href="foo">Hansen</a>
</li>
<li class="selectedimage">
<a href="foo">Parker</a>
</li>
</ul>
</li>
<li class="selectedimage">
<a href="foo">Quick Disconnects O-Rings</a>
</li>
</ul>
jQuery:
$(document).ready(function() {
// Set expandable UL elements class to 'plusimageapply'
$('ul.catList li:has(ul):not(#catSel)').addClass('plusimageapply');
// Set unexpandable LI elements class to 'selectedimage'
$('ul.catList li:not(:has(ul))').addClass('selectedimage');
// Set expanded UL elements class to 'minusimageapply'
$('ul.catList li#catSel:has(ul)').addClass('minusimageapply');
// Hide expandable UL elements that are not currently selected with ID 'catSel'
$('ul.catList:not(.level-0) li:has(ul):not(#catSel)').children('ul').hide();
// **** FIXED MY PROBLEM ****
// If an elementwith its id="catSel" show all of its parents and also update the parents class
$('#catSel').parents().show();
$('#catSel').parents().removeClass('plusimageapply');
$('#catSel').parents().addClass('minusimageapply');
// **************************
// Function for expand/collapse elements
$('ul.catList:not(.level-0) li:has(ul)').each(function(column) {
$(this).click(function(event) {
if (this == event.target) {
if ($(this).is('.plusimageapply')) {
$(this).children('ul').show();
$(this).removeClass('plusimageapply');
$(this).addClass('minusimageapply');
}
else {
$(this).children('ul').hide();
$(this).removeClass('minusimageapply');
$(this).addClass('plusimageapply');
}
}
});
});
});