请查看以下代码:http://jsfiddle.net/Bkdgr/1/
这是行不通的。但是,以下两个修改之一使其可以正常工作:
在newItem
中传递纯append
字符串,而不是用$()
包裹它:
$('button').on('click', function(e){
e.preventDefault();
var newItem = '\
<li>Hello, \
World!</li>';
$('ul').append(newItem);
});
将开始的
<li>
标记移至字符串定义的第一行:$('button').on('click', function(e){
e.preventDefault();
var newItem = '<li>Hello, \
World!</li>';
$('ul').append($(newItem));
});
当我将
<li>
上移至与前一个\
相同的行时(但未删除\
),这都不起作用。对我来说,
$()
构造函数似乎对字符串定义中的前导\
有一些问题。将纯字符串(没有$()
包装器)传递到append
似乎不会引起任何问题。为什么这样工作?在
$()
中,斜杠是否有特殊含义? 最佳答案
jQuery使用$()
解析的html字符串不能包含前导空格或换行符/返回字符,甚至不能包含纯文本。这是在api中记录的。
http://api.jquery.com/jQuery/#jQuery2
如果是HTML字符串,则必须以html标记开头。 .append()
和.html()
不太严格,因为不能将传入的字符串解析为CSS选择器。