IE 7 jQuery .append功能无法正常工作

时间:2010-09-13 23:02:35

标签: javascript jquery json internet-explorer-7

我有以下代码片段:

$("#QnAList").append("<div id=qdiv" + i + " class=divBase>
<span id='" + i + "'>" + msg.d[i].QuestionText + "</span>
<span id='display'" + i + "'>" + answerDisplay + 
"<span class='triage'> </span></div>");

msg.d[i].QuestionText是我遇到的问题。在FF中它完美地显示文本。在IE7中,唯一显示的是answerDisplay值,它是我正在写的输入元素。

当我取出所有div和span并放入一些<p></p>时,msg.d[i].QuestionText会显示answerDisplay值。任何人都可以通过这段代码看到我做错了什么吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

这里有一个问题:

<span id='display'" + i + "'>" + answerDisplay + 

结果是:

<span id='display'nn'>text</span>

因此额外报价必然会导致问题,应该是:

<span id='display" + i + "'>" + answerDisplay + 

还可以考虑在外部<div>上添加引号,或者将元素构造为DOM节点。

答案 1 :(得分:1)

您忘记关闭某个范围,您的情况下引号无效,依此类推。

这是因为很难跟踪长字符串中发生的事情。

这可能更多,但更清晰,所以你会减少错误:

  // create empty spans and divs
var span1 = $("<span>");
var span2 = $("<span>");
var span3 = ${"<span>");
var div   = $("<div>");

  // Add html and attributes you need

span1.attr("id", i);
span1.html(msg.d[i].QuestionText);

span2.attr("id", "display" + i);
span2.html(answerDisplay)

span3.attr("class", "triage");

div.attr("id", "qdiv" + i);
div.attr("class", "divbase");

  // Add everything to the DOM
div.append(span1);
div.append(span2);
div.append(span3);
$("#QnAList").append(div);

我认为使用$("</div>")实际上更快,但我使用上面的表格来提高可读性。

答案 2 :(得分:0)

对于一个愚蠢的问题的愚蠢回答:)

我这里没有结束的span标记:

...<span id='display'" + i + "'>" + answerDisplay + 
"<span class='triage'> </span></div>");

感谢所有看过它的人。

感谢Nick Craver帮助我调试它。