Javascript 如何将事件绑定到附加元素?
我尝试使用jquery effectJavascript 如何将事件绑定到附加元素?,javascript,jquery,Javascript,Jquery,我尝试使用jquery effectfadeTo显示错误消息,并尝试通过添加按钮和使用fadeout隐藏消息,但似乎不起作用 我所做的是: $("#sub_error") .fadeTo(200, 0.1, function() { $("#sub_error") .html(error.join("<br/><br/>")) .append('<br/><input type="button" name="err
fadeTo
显示错误消息,并尝试通过添加按钮和使用fadeout隐藏消息,但似乎不起作用
我所做的是:
$("#sub_error")
.fadeTo(200, 0.1, function()
{
$("#sub_error")
.html(error.join("<br/><br/>"))
.append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">')
.addClass('subboxerror')
.fadeTo(900,1);
});
$("#err_ok").click(function()
{
$("#sub_error").fadeOut("slow");
});
$(“子错误”)
.fadeTo(200,0.1,函数()
{
$(“#子#u错误”)
.html(错误.join(“
”)
.append(“
”)
.addClass('子框错误')
.fadeTo(900,1);
});
$(“#err_ok”)。单击(函数()
{
$(“#子#u错误”)。淡出(“慢”);
});
我做错了什么,有人能帮帮我吗?一开始不存在#err_ok元素,因此.click()处理程序不应用于它
你可以通过把
$("#err_ok").click(function () {
$("#sub_error").fadeOut("slow");
});
并在DOM中创建元素后调用该函数
编辑:这应该是一个完整的解决方案:
$("#sub_error").fadeTo(200, 0.1, function() {
$("#sub_error")
.html(error.join("<br/><br/>"))
.append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">')
.addClass('subboxerror')
.fadeTo(900, 1);
bindEvents();
});
function bindEvents() {
$("#err_ok").click(function() {
$("#sub_error").fadeOut("slow");
});
}
$(“#子#u错误”).fadeTo(200,0.1,函数(){
$(“#子#u错误”)
.html(错误.join(“
”)
.append(“
”)
.addClass('子框错误')
.fadeTo(900,1);
bindEvents();
});
函数bindEvents(){
$(“#err_ok”)。单击(函数(){
$(“#子#u错误”)。淡出(“慢”);
});
}
还有一个“”函数可以将事件绑定到将来创建的DOM元素。FWIW,JQuery bug跟踪器上有关于fadeTo/fadeOut bug的归档票据。有几种方法可以做到这一点。第一,插入元素后,可以将单击处理程序附加到元素:
$("#sub_error").fadeTo(200, 0.1, function() {
$("#sub_error")
.html(error.join("<br/><br/>"))
.append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">')
.addClass('subboxerror')
.fadeTo(900, 1)
.find('#err_ok')
.click( function() {
$("#sub_error").fadeOut("slow");
});
});
什么时候停止工作?嗯,在重读了这个问题之后,我也不再那么确定了。。我不知道我的答案是否有用。当我单击按钮时,具有id的div元素应该已淡出,但它没有,我不知道为什么?可能不是访问附加的按钮“err_ok”,您意识到您基本上是在这里重新实现一个(更简单)版本的jQueryUI对话框小部件。一般来说,我会使用这个小部件,并为此目的将其设置为模态。您也可以将事件绑定到创建它的函数中的err_ok。非常感谢Thomas,它工作了,我怀疑它可能没有访问附加按钮。。。谢谢;)没问题。我以前也遇到过同样的问题,我花了一段时间才弄明白:-)
$('#err_ok').live('click', function() {
$('#sub_error').fadeOut('slow');
});