如何在jquery中使用OR

时间:2012-10-14 15:14:12

标签: jquery

第一,我要感谢所有看到这一点的人,特别感谢那些回答这个问题的人。

今天,我测试了这个,但它不起作用,所以只想知道这个代码应该怎么做。 一行中有多个“OR”

$("input[name='ABC']or[name='DEF']or[name='GHI']or[name='JKL']").click(function (){ 
    //do something
});

甚至把它放在其他地方......

$("input[name='ABC'][name='DEF'][name='GHI'][name='JKL']").click(function (){ 
    //do something
}else{
    //do something else
});

我知道这两个代码都是无效的,那么可以这样编码吗?到目前为止,我一个接一个地编码,所以我的编码很长。

4 个答案:

答案 0 :(得分:2)

使用逗号分隔jhonraymos建议的元素。

我建议你为所有这些元素添加

<input type="text" name="ABC" class="special" />
<input type="text" name="DEF" class="special" />
<input type="text" name="GHI" class="special" />
<input type="button" name="JKL" class="special" />
...

然后

$('input.special').click(function() {
    // do something
});

答案 1 :(得分:1)

您可以使用多重选择器http://api.jquery.com/multiple-selector/

答案 2 :(得分:1)

您可以简单地使用或在其间放置,

使用此

$("input[name='ABC'],[name='DEF'],[name='GHI'],[name='JKL']").click(function (){ 
//do something
});

答案 3 :(得分:0)

如果您想要更加个性化的解决方案,可以使用以下内容:

$("input[name]").filter(function() { return this.getAttribute('name').search(/^(ABC|DEF)$/) > 0;});

然后,您可以根据需要将函数包装在一个函数中,以使客户端代码更具可读性。

我建议像:

var attrPattern = function(attrName, pattern) {
  return function() {
    return this.getAttribute(attrName).search(pattern) > 0;
  }
}

然后您可以使用

进行调用
$("input[name"]).filter(attrPattern("name", pattern));