触发器更改后未触发事件

时间:2012-01-07 03:15:47

标签: jquery

没有更好的方式来表达我的问题而不是向你展示一个例子。 http://jsfiddle.net/CA6aQ/

$(document).ready(function() {

    $('#foo').click(function(e) {
       e.preventDefault();
       $('#bar').addClass("herro");
    });

    $('.herro').click(function(e) {
       alert("Hello World!"); 
    });


});

为什么这不起作用?

感谢。

编辑:澄清一下,当我向一个元素添加一个类时。该类触发器的click事件不会触发。

2 个答案:

答案 0 :(得分:1)

由于动态添加了类,因此必须使用on()函数(适用于jQuery 1.7及更高版本)。对于早期版本,请使用live()

Example

$(document).ready(function() {
    $('#foo').click(function(e) {
       e.preventDefault();
       $('#bar').addClass("herro");
    });
    $(document).on('click', '.herro', function() {
       alert("Hello World!"); 
    });
});

注意语法上的差异。我们做的是选择文档,将click事件绑定到它,检查是否在.herro元素上触发了click事件,然后触发该函数。它的工作方式与click相同,只不过它可以使用动态元素(在您的情况下,您选择的类在页面加载时不存在)。

答案 1 :(得分:0)

当没有.herro类时,设置.click上的

。使用jQuery .on()来“委托”事件。

示例:http://jsfiddle.net/CA6aQ/2/

 $('body').on('click', '.herro', function(e) {
       alert("Hello World!"); 
    });

参考:http://api.jquery.com/on/

另外,请将您的代码复制到Stackoverflow中,因为jsfiddle可能并不总是可用,这对任何人都没有帮助。 Stackexchange是一个社区帮助网站,试图为它的成功做出一点贡献:)