4

附加 's 的正确语法有很多结果<li>,但是我试图找到一个解决方案,其中+this['name']+值包含在<li>'s 中。firebug 正在显示'SyntaxError: unterminated string literal',jslint 正在显示'Unclosed string'。我已经尝试了许多不同的逗号位置变体,但我无法让它工作。

 $.each(data.result, function() {
     $("ul").append("<li>Name: "+this['name']+"</li>
                     <li>Age: "+this['age']+"</li>
                     <li>Company: "+this['company']+"</li>
                     <br />");
 });

谢谢你。

4

3 回答 3

11

您可以使用反斜杠字符转义行尾\,如下所示:

 $.each(data.result, function(){
 $("ul").append("<li>Name: " + this['name'] + "</li> \
     <li>Age: " + this['age'] + "</li> \
     <li>Company: "+this['company']+"</li> \
     <br />");
 });

这是因为 Javascript 会在某个时间在行尾自动插入半列。在这种情况下,你的字符串没有关闭。另一种解决方案是关闭每行上的每个字符串,并使用+将它们全部连接起来。

 $.each(data.result, function(){
 $("ul").append("<li>Name: " + this['name'] + "</li>" +
     "<li>Age: " + this['age'] + "</li>" +
     "<li>Company: "+this['company']+"</li>" +
     "<br />");
 });

(不相关,但<br/>不允许在<ul>元素内部)

于 2012-11-03T02:45:33.380 回答
0

这应该快得多

 li = '';
 $.each(data.result, function(){
     li += "<li>Name: " + this['name'] + "</li>" +
          "<li>Age: " + this['age'] + "</li>" +
          "<li>Company: "+this['company']+"</li>" +
          "<br />"; // could remove this and use css
 });

 $("ul").append(li);

请参阅http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/

于 2012-11-03T02:52:57.587 回答
0

您实际上根本不想连接它!考虑一下包含 HTML 或类似 HTML 数据的可变数据会发生什么。使用你的方法,它会被解析,可能会破坏一些东西,甚至让你接受 XSS 攻击方法。

您已经在使用 jQuery,所以正确的方法很简单:

$('ul').append(
    $('<li/>').text('Name: ' + this.name), 
    $('<li/>').text('Age: ' + this.age),
    // etc.
);

(注意:我相信.append() 允许尽可能多的参数。如果没有,请尝试在追加时使用元素数组。)

于 2012-11-03T05:30:50.853 回答