繁体   English   中英

隐藏除选定对象以外的所有LI`

[英]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();
});

http://jsfiddle.net/BqKun/

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM