在jquery中动态添加div元素

时间:2010-07-17 05:02:24

标签: jquery html append document-body

我使用以下函数在我的asp.net页面提交表单后显示状态消息。函数被调用但是它(alertmsg div)似乎没有显示为什么?

 function topBar(message) {
        var $alertdiv = $('<div id = "alertmsg"/>');
        $alertdiv.text(message);
        alert($alertdiv);
        alert($alertdiv.text(message));
        $alertdiv.click(function() {
            $(this).slideUp(200);
        });
        $(document.body).append($alertdiv);
        setTimeout(function() { $alertdiv.slideUp(200) }, 5000);
    }

警报声明显示[Object object]会发生什么......我认为两者都需要显示不同的输出......任何建议......

的CSS:

#alertmsg
{
  font-family:Arial,Helvetica,sans-serif;
   font-size:135%;
   font-weight:bold;
  overflow: hidden;
  width: 100%;
  text-align: center;
  position: absolute;
  top: 0;
  left: 0;
  background-color: #404a58;
  height: 0;
  color: #FFFFFF;
  font: 20px/40px arial, sans-serif;
  opacity: .9;
}

3 个答案:

答案 0 :(得分:2)

您正在警告jQuery对象。尝试将您的提醒更改为: alert($alertdiv.get(0).innerText);

除此之外,您的div可能无法显示,因为您在将div元素添加到页面之前添加了click事件。

尝试更改:

$alertdiv.click(function() {
            $(this).slideUp(200);
        });

要:

$alertdiv.bind('click', function() {
            $(this).slideUp(200);
        });

甚至:

$alertdiv.live('click', function() {
            $(this).slideUp(200);
        });

我认为这可能是绑定动态生成元素的唯一方法。我从未在文档就绪函数之外尝试.click()

编辑: 除了jQuery的上述建议之外,还应更改css以指定div的高度。您的高度为0将导致它在技术上呈现并可能向上滑动。但是,你将无法看到它,因为它在点0,0处是0像素高。

答案 1 :(得分:1)

警报($ alertdiv.text(消息));还将$ alertdiv的文本设置为messasge并返回$ alertdiv以支持jQuery的链接。您正在寻找的是$ alertdiv.text(),它将返回$ alertdiv中的文本。

另外,为什么要动态创建div?是否有任何理由不能在页面上显示它并通过slideUp()/ slideDown()隐藏/显示它?

答案 2 :(得分:0)

要动态插入<div>,您可以使用此

$('<div>Test</div>').insertAfter('.inner'); //在具有类内部

的元素之后插入

或更好

$("#myparent").html("<div id='mynewdiv'>hi</div>");