请查看以下代码: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选择器。

09-04 07:42
查看更多