我使用以下函数在我的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;
}
答案 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>");