代码之家  ›  专栏  ›  技术社区  ›  Cam

jquery-.fadeout所有的div,除了那些有这些id的吗?

  •  3
  • Cam  · 技术社区  · 14 年前

    除了这三个身份证中的任何一个,我怎么能淡出所有的分区?

    #dontFadeOne
    #dontFadeTwo
    #dontFadeThree
    

    我想是这样的:

    $("div").notAnyOf("dontFadeOne","dontFadeTwo","dontFadeThree").fadeOut();
    

    但我找不到一个“没有任何”函数。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Henry C    14 年前

    请看一下.not()函数:

    http://api.jquery.com/not/

    由于官方文件对此解释非常清楚,以下是来自API网站的:

    删除特定元素

    .not()方法的第二个版本允许我们从匹配的集合中删除元素,假设我们以前通过其他方法找到了这些元素。例如,假设我们的列表有一个ID应用于其中一个项目:

    <ul>
      <li>list item 1</li>
      <li>list item 2</li>
      <li id="notli">list item 3</li>
      <li>list item 4</li>
      <li>list item 5</li>
    </ul>
    

    我们可以使用本机javascript getElementByID()函数获取第三个列表项,然后将其从jquery对象中移除:

    $('li').not(document.getElementById('notli'))
      .css('background-color', 'red');
    

    此语句更改项目1、2、4和5的颜色。我们可以用一个更简单的jquery表达式来完成同样的事情,但是当其他库提供对普通dom节点的引用时,这种技术会很有用。

    从jquery 1.4开始,.not()方法可以像.filter()一样将函数作为其参数。函数返回true的元素从筛选集中排除;包括所有其他元素。

        2
  •  3
  •   cletus    14 年前

    你可以使用 not() :not 为此:

    $("div").not("#dontFadeOne, #dontFadeTwo, #dontFadeThree").fadeOut();
    

    或:

    $("div").not("#dontFadeOne).not("#dontFadeTwo").not("#dontFadeThree").fadeOut();
    

    $("div:not(#dontFadeOne):not(#dontFadeTwo):not(#dontFadeThree)").fadeOut();