[英]Hide all LI`s except the selected
我想在某个UL中隐藏所有其他LI,但我选择的LI除外。
<ul>
<li><div></div></li>
<li><div></div></li>
</ul>
<ul>
<li><div></div></li> -- HIDE
<li><div></div></li> -- SELECT
<li><div></div></li> -- HIDE
</ul>
<ul>
<li><div></div></li>
<li><div></div></li>
</ul>
我该如何解决最佳方法?
我尝试使用索引,但是在使其正常工作以及选择正确的UL时遇到了一些问题。 如您所见,我没有关于UL或LI的课程,所以我认为唯一的选择是LI。
我真正要做的是在LI内选择一个div,因此,我可以通过以下方式获得所选LI的索引:
var li_index = $(this).parent().index();
尝试过这样的事情吗?
$(this).closest('ul').find('li').not(this).hide();
要么
$('li', $(this).closest('ul')).not(this).hide();
你从被点击然后隐藏与其他元素的DIV遍历DOM了.not($(this).parent()).toggle()
- >不是li
环绕着这座div
$('div').click(function () {
$(this).closest('ul').find('li').not($(this).parent()).toggle();
});
.toggle()
可以替换.hide()
如果你不希望用户能够扭转他们的决定。
JS小提琴: http : //jsfiddle.net/tDmy3/2/
获取包含所有相关<li>
元素的jQuery元素集,然后删除所选元素。 例如:
$('ul#mylist li').not(selector).hide();
从JQuery文档中 :
给定一个表示一组DOM元素的jQuery对象,.not()方法从匹配元素的子集构造一个新的jQuery对象。 提供的选择器已针对每个元素进行了测试; 与选择器不匹配的元素将包含在结果中。
如果没有引用,也可以给元素对象本身而不是选择器。
这应该工作:
$( 'ul li' ).click( function( e ) {
// by default, hide all li's
$( 'ul li' ).hide();
// show only the selected li
$( this ).show();
});
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.