当用户更改单选按钮时,我将更新消息添加为表行。我遇到的事实是,一旦添加了消息,它就没有我认为的功能,因为它是在页面加载后添加的。然后我发现livequery插件似乎允许在事后添加的元素具有与页面加载的元素相同的功能。
我有click fadeout()正常工作,但我似乎无法弄清楚刚刚添加的表行上的setTimeout()的语法。我知道当前的语法不正确,我把它留在了我感到沮丧的地方。
<script>
$(document).ready(function(){
$("input[@name='optInOut']").change(function(){
$('#tblUpdates').append('<tr class="msgUpdate"><td colspan="2">added message0</td><td align="right"><img src="../Images/CCC/12-em-cross.png" class="imgClose" alt="close message" title="close message" /></td></tr>');
});
setTimeout($.livequery.function() {
$('.msgUpdate').fadeOut('normal');
}, 1000); // <-- time in milliseconds
});
$('img.imgClose').livequery('click', function(){
$(this).parent().parent().fadeOut('normal');
});
</script>
如果我需要提供更多信息,我会尝试这样做,并提前感谢您的帮助。
答案 0 :(得分:2)
首先这一点
$('img.imgClose').livequery('click', function(){
$(this).parent().parent().fadeOut('normal');
});
</script>
应该是
$('img.imgClose').livequery('click', function(){
$(this).parent().parent().fadeOut('normal');
});//<--- closes the livequery call
});//<--- closes document.ready
</script>
其次,我建议不要使用fadeOut的livequery,但是如果你打算使用它,这个语法:
setTimeout($.livequery.function() {
$('.msgUpdate').fadeOut('normal');
}, 1000); // <-- time in milliseconds
});
应该是:
$.livequery(function(){
setTimeout(function(){
$('.msgUpdate').fadeOut('normal');
},1000);
});
答案 1 :(得分:0)
你不需要调用window.setTimeout吗?我不确定这是否有必要,但值得一试。
答案 2 :(得分:0)
使用最新版本的jQuery(1.3.X),您不需要使用livequery插件。您可以使用$(“div”)。live(“click”等等....
我认为如果你看一下jQuery的新实时功能,你可以清理你的Javascript,以便更容易理解。
答案 3 :(得分:0)
如果setTimeout的目标是淡化页面加载时存在的元素,那么你不需要涉及livequery
setTimeout("$('.msgUpdate').fadeOut('normal');", 1000);