var totalNum = new Array('img', 'img', 'img', 'img');
现在documentready
我在html页面中添加了div
,如:
$('#mainid').after('<div id="button"></div>');
问题是我想在<span></span>
数组中添加总数为totalNum
的标记,如:
<div id="button">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
我尝试使用for(){}
循环进入.after()
,但语法错误。我的代码在这里:
jQuery('#mainid').after('<div id="button">' +
for(i=1;i<=totalNum.length;i++){
jQuery('<span>'+i+'</span>').appendTo('#button');
}
+ '</div>');
答案 0 :(得分:2)
你不能在字符串连接的中间抛出for
循环。
var button = $('#button');
$.each(totalNum, function(index) {
$('<span />', { text: index + 1 }).appendTo(button);
});
我相信这有一些好处,比如......
#button
的引用。$.each()
对我来说比明确的for
循环更优雅。答案 1 :(得分:1)
jQuery('#mainid').after('<div id="button"></div>');
for(i=1;i<=totalNum.length;i++){
jQuery('<span>'+i+'</span>').appendTo('#button');
}
OR
var tmpStr = '';
for(i=1;i<=totalNum.length;i++){
tmpStr += '<span>'+i+'</span>';
}
jQuery('#button').append(tmpStr);
这是防止语法错误的更好方法。追加。
答案 2 :(得分:1)
你不能像这样连接for循环!你也忘了申报i
。然后建议缓存长度并将所有html字符串附加到变量中并最后附加到对象以避免尽可能地强调DOM。你可以这样做:
var spans = '';
for (var i=1, len=totalNum.length; i<len; i++) {
spans += '<span>'+ i +'</span>';
}
$('<div id="button">').append(spans).appendTo('#mainid');
答案 3 :(得分:1)
使用map
函数将数组作为表达式循环,并使用join
将数组项连接成一个字符串:
jQuery('#mainid').after(
'<div id="button">' +
jQuery.map(totalNum, function(e,i){ return '<span>'+(i+1)+'</span>'; }).join('') +
'</div>'
);
答案 4 :(得分:0)
尝试:
jQuery('#mainid').after('<div id="button"></div>');
for( i=1; i<=totalNum.length; i++ ) {
jQuery('#button').append('<span>' + i + '</span>');
}
我从.appendTo切换到.append,因为这似乎是一种间接的做事方式。对于我们正在做的事情,这一点要清楚一点。