目前我有这个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>
...
这个CoffeeScript使用jQuery:
$('*[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中,包含其他数据。我想要的是在simpleCopy
和data-is_array="t"
为data-simpletype
,int
,char
或{{1}的所有输入上致电text
}。
我目前的解决方案有效,但不是很好。有没有办法得到所有这些元素......像一个逻辑OR选择器,像这样做:
real
我知道有一个regex filter,但我不想使用它,因为当我在Chrome下测试时,这真的很慢。有没有更好的jQuery方法来做到这一点?
答案 0 :(得分:1)
我认为混合使用多个选择器和查找/过滤器
$('[data-is_array="t"]').filter('[data-simpletype="int"], [data-simpletype="char"], [data-simpletype="text"], [data-simpletype="real"]').find(':input').each ->
演示:Fiddle
答案 1 :(得分:0)
你太复杂了。
<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 ()...
});
你很好。优秀的程序员是懒惰的程序员。