我正在尝试添加每个 span
的内容以及 title
属性中的值。
<div id="group-wrap" class="group">
<span class="lbracket" title="&f">(</span>
<span class="grouptitle" title="&f"> Group </span>
<span class="rbracket" title="&f">) </span>
<span class="username" title="&f"> Username </span>
<span class="col" title="&f">:</span>
<span class="text" title="&f"> Helo There! </span>
</div>
这是我目前所拥有的:
var str = [];
$('#group-wrap span').each(function(){
str.push($(this).attr('title'));
});
alert(str.join(''));
});
输出是 &f&f&f&f&f
(每个 title 属性的值),但预期输出具有值,加上范围内的内容。属性的值应该附加在内容之前。
&f(&fGroup&f)&fUsername: &f text
我怎样才能得到这个结果?
最佳答案
看起来你在找
str.push( this.getAttribute('title'), this.textContent || this.text );
至于性能方面的原因,您不应该为每次迭代都重新创建一个 jQuery 对象。更好的是,根本不要使用 jQuery 来接收这些值。
顺便说一句,您可以使用 jQuerys .map()
来更优雅地完成它:
jQuery(function($){
var str = $('#group-wrap span').map(function(){
return this.getAttribute('title') + this.textContent || this.text;
}).get();
alert(str.join(''));
});
引用:.map()
关于javascript - 将元素中包含的内容与数组一起添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175361/