jQuery:appendTo($('body'))不能正常工作

时间:2012-11-14 15:53:15

标签: jquery jquery-selectors

var popupType1 = "<div id=\"layerpopuplock\" style=\"position:absolute; width:375px; height:170px; z-index:2; left: 2px; top: 50px; visibility: hidden; \">";
    popupType1 += "<table width=\"375\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF0000\">";
    popupType1 += "<tr><td align=\"center\" bordercolor=\"#FFFFFF\" class=\"FacetBiggerFieldCaptionTD\" id=\"popupmessagelock\" nowrap>message</td></tr>";
    popupType1 += "</table></div>";

$(popupType1).appendTo($('body'));

这段代码不起作用。

我尝试了一个$('body')的console.log,我看到它是空的,但是当然,html已经在这里,并且正文已存在。

这可能是$('body')为空的原因?


SOLUTION:

抱歉浪费你的时间。 我的假设是错误的: html已经在这里

我以这种方式纠正了,现在它已经过去了,悲伤!!!!

$(function() {
    ... previous code ...
});

4 个答案:

答案 0 :(得分:8)

替换你的最后一个

popupType1 = ...

通过

popupType1 += ...

要有一个有意义的HTML字符串。

另请注意,如果visibility: hidden;样式中没有div,则会更容易看到结果。

<强> Demonstration

答案 1 :(得分:7)

您现在需要+=,它只会附加</table></div>

答案 2 :(得分:3)

我看到3点需要注意:

  1. 使用+= ... var longstr = str; longstr += str2;
  2. 连结(合并)字符串 {li> in .appendTo()使用选择器而不是对象引用... $(..).appendTo('body');
  3. 您是否正在使用像jQuery.ready( ... );这样的DOM-Ready处理程序来触发您的代码?这个处理程序可以确保所有DOM节点在使用你的脚本时都已准备就绪,它将被插入到正确的位置(即使是身体节点存在,也不会妨碍其他节点)jQuery API: .ready()
  4. 另外2:你也可以使用$('body').append(popupType1);

    另外还有3:它可能取决于您调用脚本的位置 - 例如,正文中的脚本标记可能会出现奇怪的添加元素。

答案 3 :(得分:1)

popupType1 += "<tr><td align=\"center\" bordercolor=\"#FFFFFF\" class=\"FacetBiggerFieldCaptionTD\" id=\"popupmessagelock\" nowrap>message</td></tr>";
popupType1 += "</table></div>";

您在前两个popupType1分配中缺少+ =。