处理 jQuery 中附加元素的单击事件 [英] Handle click event for appended elements in jQuery

查看:21
本文介绍了处理 jQuery 中附加元素的单击事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下方法在我的页面中生成了一些元素.例如,

I have generated few elements in my page using following method. For example,

$("#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 事件时:

and when i create an onclick event for 'fClass' like so :

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

它不起作用!但是,如果我将 onclick 函数放在另一个函数中,就在 .dialog() 之后,它可以工作!我有很多以这种方式创建的元素,所以我不能将所有 onclick 事件放在一个方法中.有没有办法解决?我的 .append 方法也有同样的问题.

It does not works ! However, if i put the onclick function inside the other function, right after .dialog(), it works ! I have a lot of elements created this way, so I cannot put all onclick events in a single method. Is there any way around this? I am having the same problem with .append method as well.

推荐答案

根据你使用的 jQuery 版本,将其更改为 .on.delegate..

Change it to .on or .delegate based on the version of jQuery you are using..

从 jQuery 1.7+ 开始

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

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

For older jQuery versions use delegate

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

这篇关于处理 jQuery 中附加元素的单击事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆