【问题标题】:jQuery select class but not certain data attributesjQuery选择类但不是某些数据属性
【发布时间】:2016-01-12 10:45:08
【问题描述】:

我正在尝试选择某个类的多个 div 元素,但没有某些数据属性。例如,我有 12 个 div,其数据属性从 1 到 12,我想选择所有这些,但数据属性为 1、11 和 12 的除外。这是我的(不工作)代码:

$('div.randomize_class [data-value!=1],[data-value!=11],[data-value!=12]');

目的是只打乱匹配的 div 并最终附加属性为 1、11 和 12 的那些。改组功能很好用,它只是选择选择类的一个子集。

所以洗牌后,我只想选择数据属性为1、11和12的那些。我试过这个:

$('.randomize_class [data-value=1],[data-value=11],[data-value=12]')

很高兴得到任何帮助!非常感谢。

【问题讨论】:

    标签: jquery jquery-selectors custom-data-attribute


    【解决方案1】:

    您应该将.filter() 与属性值选择器结合使用。

    只选择数据属性为 1、11 和 12 的那些

    $('.randomize_class').filter('[data-value=1],[data-value=11],[data-value=12]')
    

    选择除数据属性为 1、11 和 12 之外的所有元素。 :not() Selector.not() 函数排除元素

     $('.randomize_class').filter(':not([data-value=1]),:not([data-value=11]),:not([data-value=12])')
    

    $('div.randomize_class').not('[data-value=1],[data-value=11],[data-value=12]');
    

    【讨论】:

      【解决方案2】:

      你说过你们都想选择data-value=1(以及11和12),而且你们确实想选择。


      对于not的情况,可以使用:not:

      $('div.randomize_class:not([data-value=1]):not([data-value=11]):not([data-value=12])');
      

      ...它还具有在 CSS 中工作的优点(我认为这并不适用于此),前提是您只在 :not 中使用 simple selectors(因为 CSS 定义 :not 只需要简单的选择器;jQuery更进一步)。

      或其表亲.not:not 文档建议通常是更好的选择):

      $('div.randomize_class').not('[data-value=1], [data-value=11], [data-value=12])');
      

      对于选择 data-value=1(以及 11 和 12)的选项,您可以使用简单的属性选择器系列:

      $('div.randomize_class[data-value=1], div.randomize_class[data-value=11], div.randomize_class[data-value=12])');
      

      【讨论】:

        【解决方案3】:

        您需要使用.not() 排除这些项目

        $('div.randomize_class').not('[data-value!=1],[data-value!=11],[data-value!=12]');
        

        您的选择器.randomize_class [data-value=1],[data-value=11],[data-value=12] 将使用data-value=1 获取randomize_class 下的所有元素,以及使用data-value=11data-value=12 获取页面中的所有元素

        【讨论】:

          【解决方案4】:
           $('.randomize_class:not([data-value="1"],[data-value="11"],[data-value="12"])')
          

          【讨论】:

          • 请使用您问题的编辑链接以上下文、详细信息和/或代码示例对其进行补充。 发布答案按钮只能用于问题的完整答案
          猜你喜欢
          • 2014-11-30
          • 2012-02-29
          • 1970-01-01
          • 1970-01-01
          • 2014-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多