我正在使用Coffeescript编写的Backbone应用程序。我试图访问与div列表中的每个div相关联的cid。每个div都有相同的联系人' class和cid以及相关的整数值。
<div class="contact-list">
<div class="contact" cid="1"></div>
<div class="contact" cid="2"></div>
<div class="contact" cid="3"></div>
<div class="contact" cid="4"></div>
<div class="contact" cid="5"></div>
</div>
我想找到cid为4的元素:
console.log "ALL", $('.contact')
for div in $('.contact')
console.log div
console.log div.attr('cid')
在调用.attr()时,循环似乎会中断。 (当我注释掉这一行时,代码打印所有5个div。否则它只打印第一个)这表明我必须正确调用.attr()?
答案 0 :(得分:4)
当迭代jQuery对象时,元素引用将引用DOM元素而不是jQuery对象,因此您无法直接访问jQuery方法
console.log "ALL", $('.contact')
for div in $('.contact')
console.log $(div)
console.log $(div).attr('cid')
使用.each()之类的
console.log "ALL", $('.contact')
$('.contact').each (i, div) ->
console.log div
console.log $(div).attr('cid')
演示:Fiddle
答案 1 :(得分:0)
你需要再次通过sizzle运行div,因为attr不能处理非jquery对象。 $(DIV).attr()。应该工作。
答案 2 :(得分:0)