手柄单击事件中jQuery的附加元素。(Handle click event for appende

2019-06-27 05:16发布

我已经产生使用下面的方法在我的网页几个要素。 例如,

$("#button"+caption).click(function(){
        var firstDisplay = '<div id="firstDisp'+caption+'"><ul>';
        for(var i=0;i<parents.length;i++){
            firstDisplay=firstDisplay+'<li class="fClick">'+parents[i]+'</li>';
        }
        firstDisplay=firstDisplay+'</ul></div>';
        $(firstDisplay).dialog();
});

当我创建“FCLASS”像这样一个onclick事件:

$(".fClick").click(function(){
    alert("hey!");
}); 

它没有工作! 但是,如果我把的onclick功能的其他功能里面,后.dialog()吧,它的作品! 我有很多这种方式创建的元素,所以我不能把所有的onclick事件在一个单一的方法。 有没有办法解决? 我有.append方法同样的问题也是如此。

Answer 1:

将其更改为.on.delegate基于jQuery的版本使用的是..

在jQuery 1.7+的

$(document).on('click', '.fClick', function(){ 
    alert("hey!");
}); 

对于较旧的jQuery版本使用委托

$(document).delegate('.fClick', 'click', function(){
    alert("hey!");
}); 


Answer 2:

使用on ,而不是click

$(".fClick").on('click',function(){
  alert("hey!");
}); 

click增加了点击处理程序.fClick是存在,当你调用元素$('.fClick').click({...}).fClick后来添加的元素不会有click事件。 但是,当你使用on ,所有.fClick元素将有一个单击处理程序,即使它们是后来添加的。
在这里阅读更多: http://api.jquery.com/on/



Answer 3:

再次调用$(文件)。就绪(函数(),并添加您的代码中有该文件被读取(刷新)再次,你可以直接申请你的代码存在。



Answer 4:

什么维加说是完全的工作。 这里是一个暗示:我想在第二行有一个错误。 也许你可以使用addClass方法,因为你不能把ID或类渲染。 下面是一个例子:

var content = "<div>Hello, World</div>";
$("div").after(content);
$("last:div").addClass("mydiv");

和类将被添加,但我不知道,你可以添加一个id。



文章来源: Handle click event for appended elements in jQuery