Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将事件绑定到附加元素?_Javascript_Jquery - Fatal编程技术网

Javascript 如何将事件绑定到附加元素?

Javascript 如何将事件绑定到附加元素?,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

我尝试使用jquery effect
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');
});