1

在从我的 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;
}
4

3 回答 3

2

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

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

尝试改变:

$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 像素。

于 2010-07-17T05:14:58.807 回答
1

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

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

于 2010-07-17T05:12:38.970 回答
0

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

$('<div>Test</div>').insertAfter('.inner');//插入到具有内部类的元素之后

或更好

$("#myparent").html("<div id='mynewdiv'>hi</div>");
于 2010-07-17T05:15:18.993 回答