簡體   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