jQuery选择器中AND和OR的组合

jQuery选择器中AND和OR的组合,jquery,css-selectors,Jquery,Css Selectors,我有一个具有以下语法的jQuery选择器: $('input[type=image]').not('.xyzClass').click(function{ //some functionality }); 因此,这将为所有类型为image且没有classxyzClass的组件提供特定的单击功能 *****我修改了这个问题以反映最新的变化,下面的一些答案对于以前的版本是正确的,但是对于修改后的版本可能不正确。对此表示歉意 我们需要一个OR条件和类条件。以致 任何“输入”类型为图像的组件,

我有一个具有以下语法的jQuery选择器:

$('input[type=image]').not('.xyzClass').click(function{
    //some functionality
});
因此,这将为所有类型为image且没有class
xyzClass
的组件提供特定的单击功能

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

我们需要一个OR条件和类条件。以致 任何“输入”类型为图像的组件,如果

  • 类不是
    xyzClass
  • id包含字符串
    someIdString
  • 你能帮我修改一下现有的选择器吗

    干杯。

    要做“或”,请使用逗号:

    $('input[type=image]')
        .not(".xyzClass,[onclick*='someSpecificFunctionality()']")
        .click(...);
    
    但我不确定您是如何定义onclick的:它是在HTML中还是以编程方式添加的?

    使用“或”逗号:

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

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

    更新的答案

    $('*:not(.xyzClass)[id*=containsThisValue]')
    
    对于您更新的问题,虽然这不是优化的,但我建议您尽可能多地指定

    原始答案:

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

    更新的答案

    $('*:not(.xyzClass)[id*=containsThisValue]')
    
    对于您更新的问题,虽然这不是优化的,但我建议您尽可能多地指定

    原始答案:

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

    这也将在第二次“onClick”检查中设置not条件。不是吗?这不是我们想要的解决方案。哦-问题的原始形式有点含糊不清。这将在第二次“onClick”检查中设置not条件。不是吗?这不是我们想要的解决方案。哦-问题的原始形式有点模糊。接受这个作为答案,因为这是更灵活的方式,考虑到我将来可能有更多的条件。接受这个作为答案,因为这是更灵活的方式,考虑到我将来可能有更多的条件。