【问题标题】:A combination of AND and OR in jQuery selectorsjQuery 选择器中 AND 和 OR 的组合
【发布时间】:2009-08-27 05:24:57
【问题描述】:

我有一个 jQuery 选择器,语法如下:

$('input[type=image]').not('.xyzClass').click(function{
    //some functionality
});

因此,这为所有类型为 image 且没​​有类 xyzClass 的组件提供了特定的点击功能。

*****我已经修改了问题以反映最新的变化,下面的一些答案对于以前的版本是正确的,但对于修改后的版本可能不正确。对此深表歉意。

我们需要一个带有类条件的 OR 条件。这样 任何类型为图像的“输入”组件都应选择 IF

  1. 类不是xyzClassOR
  2. id 包含字符串someIdString

您能帮忙修改现有选择器吗?

干杯。

【问题讨论】:

    标签: jquery css-selectors


    【解决方案1】:

    更新答案

    $('*:not(.xyzClass)[id*=containsThisValue]')
    

    对于您更新的问题,虽然这没有优化,但我建议您尽可能多地指定。

    原答案:

    function someSpecificFunctionality() {
    }
    
    $(els)
    
    .click(someSpecificFunctionality)
    .data('someSpecificFunctionality', true)
    
    
    $(els).filter(function() {
    
        return 
            $(this).not('.xyzClass') && 
            $(this).data('someSpecificFunctionality') == true
    
    });
    

    【讨论】:

    • 接受这个作为答案,因为考虑到我将来可能有更多条件,这是一种更灵活的方式。
    【解决方案2】:
    $(":image:not(.xyzClass),:image[onclick*='someSpecificFunctionality']");
    

    【讨论】:

      【解决方案3】:

      做一个“或”使用逗号:

      $('input[type=image]')
          .not(".xyzClass,[onclick*='someSpecificFunctionality()']")
          .click(...);
      

      我不确定您是如何定义 onclick 的:它是在您的 HTML 中还是以编程方式添加?

      【讨论】:

      • 这也会在第二次“onClick”检查中设置一个非条件。不是吗?这不是我们想要的解决方案。
      • 哦 - 这个问题的原始形式有点模棱两可。
      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2011-01-16
      相关资源
      最近更新 更多