2011-03-28 83 views
1

好吧,我有一堆班末级班。我希望独立于其他内容。为什么jQuery在循环时返回span元素内容的每个字符?

<span class='endtime'> 
    2011-03-29 00:01:03 
</span> 

<span class='endtime'> 
2011-03-31 19:20:11 
</span> 

<span class='endtime'> 
2011-03-28 19:00:12 
</span> 

但问题是,当我这样做:

var text = $('.endtime').text(); 
for(var i = 0; i < text.length; i++) { 
     $('.counter').countdown({ 
      until: text[i], 
      format: 'HMS' 
     }) 
} 

文本的内容只有1个字符?如何让它返回整个角色?

回答

3

当拨打.text()时,您可以选择传入一个功能在集合中的每个项目上执行。

$("span.endtime").text(function(i, text){ 
     $('.counter').countdown({ 
      until: text, 
      format: 'HMS' 
     }) 
}); 

jsfiddle简单的例子。

+0

不也替换文本,在这种情况下,用'undefined'? – Kobi 2011-03-28 12:38:07

+0

@Kobi,只要没有任何东西被返回,文本元素不会被改变。 – 2011-03-28 12:39:31

+0

不知道!似乎jQuery的API网站正在关闭... – Kobi 2011-03-28 12:40:46

2

text()返回一个字符串第一个元素,不是所有元素的所有文本!

要通过遍历所有元素,试试这个:

$('.endtime').each(function(){ 
    var text = $(this).text(); 
    //something with text 
}); 

如果你真的想要一个阵列你也可以这样写:

var texts = $('.endtime') 
      .map(function(){return $(this).text();}) 
      .get(); 
// texts is now an array of strings. 
// rest of the code is the same. 
1

试试这个代码

var text = $('.endtime'); 
for(var i = 0; i < text.length; i++) { 
    $('.counter').countdown({ 
     until: text[i].text(), 
     format: 'HMS' 
    }) 
} 
相关问题