繁体   English   中英

通过在选择器中使用逻辑OR选择带有jQuery的HTML元素

[英]Select HTML elements with jQuery by using logical OR in the selector

目前,我有这个HTML结构:

...
<div data-is_array="t" data-simpletype="int">
    <input type="text">
</div>
<div data-is_array="t" data-simpletype="char">
    <input type="text">
</div>
<div data-is_array="t" data-simpletype="text">
    <textarea></textarea>
</div>
<div data-is_array="t" data-simpletype="real">
    <input type="text">
</div>
...

而使用jQuery的CoffeeScript:

$('*[data-is_array="t"][data-simpletype="int"] :input').each ->
    simpleCopy($(this))
$('*[data-is_array="t"][data-simpletype="char"] :input').each ->
    simpleCopy($(this))
$('*[data-is_array="t"][data-simpletype="text"] textarea').each ->
    simpleCopy($(this))
$('*[data-is_array="t"][data-simpletype="real"] :input').each ->
    simpleCopy($(this))

在HTML中,其他输入与其他数据一起包裹在div中。 我想要在所有具有data-is_array="t"data-simpletypeintchartextreal输入上调用simpleCopy

我当前的解决方案有效,但并不是很好。 有没有办法让所有这些元素与某物。 就像一个逻辑OR选择器一样,可以做到这一点:

$('*[data-is_array="t"][data-simpletype="int||char||text||real"] :input||textarea').each ->
    simpleCopy($(this))

我知道有一个regex过滤器 ,但我不想使用它,因为当我在Chrome上进行测试时,这确实很慢。 有没有更好的jQuery方法来做到这一点?

我认为多个选择器和查找/过滤器的组合会做

$('[data-is_array="t"]').filter('[data-simpletype="int"], [data-simpletype="char"], [data-simpletype="text"], [data-simpletype="real"]').find(':input').each -> 

演示: 小提琴

您太复杂了。

<div id="foo">
  <div data-is_array="t" data-simpletype="int">
    <input type="text">
  </div>
  <div data-is_array="t" data-simpletype="char">
    <input type="text">
  </div>
  <div data-is_array="t" data-simpletype="text">
    <textarea></textarea>
  </div>
  <div data-is_array="t" data-simpletype="real">
    <input type="text">
  </div>
</div>

用div包装所有内容

$(' #foo input, #foo textarea ').each(function() {
  your stuff ()...
});

你很厉害。 好的程序员是懒惰的程序员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM