在div上的JQuery attr()没有返回值

时间:2015-06-04 12:00:46

标签: jquery coffeescript attr

我正在使用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()?

3 个答案:

答案 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)

为什么不使用数据...... jquery

你可以放价值

$div.data("cid", "test" );

你可以读取值

$div.data("cid")