jQuery代码隐藏了我div中的所有内容

时间:2016-01-11 21:19:41

标签: javascript jquery html css

我有以下代码:

jQuery(document).ready(function($) {
  $("ul.accordion-section-content li[id*='layers-builder'] button.add-new-widget").click(function() {
    $("#available-widgets-list div:not([id*='layers-widget'])").css('display','none');
  });
});

我的想法是,当我点击一个包含类" layers-builder"的按钮时,所有div都在" available-widgets-list"不包含类" layers-widget"是隐藏的。

我面临的问题是,使用此代码还会隐藏" layers-widget"中的所有div。 (因为并非所有人都有"图层小部件"在id。

例如,这是一个模型标记:

<div id="some-id">
...
</div>

<div id="this-layers-widget-89">
    <div id="hello"></div>
    <div id="yes"></div>
</div>

在上面的例子中,第一个div&#34; some-id&#34;将被隐藏,以及所有子div内部&#34; this-layers-widget-89&#34;

我怎样才能使div中的所有内容包含&#34; layers-widget&#34;仍然显示?

2 个答案:

答案 0 :(得分:1)

&#34;&gt;&#34;运算符指定div必须是#available-widgets-list的直接子项:

$("#available-widgets-list > div:not([id*='layers-widget'])").css('display','none');

答案 1 :(得分:0)

您应该添加一个类,而不是依赖于查找some-id的部分内容,但这也可以正常工作:$('[id*="some-id"]');

您还应该使用hide()方法内置的jquery而不是css('display', 'none')。它们确实完全相同,但使用内置方法更具可读性。