jquery点击事件未触发

时间:2011-06-22 15:23:08

标签: javascript jquery dom-manipulation

我在一个元素上有一个click事件,它将它的类从“fave”更改为“faved”,然后我尝试触发一个新的单击事件,如果该元素在它的类被保存时被点击,但它没有触发,这是我的javascript。

$("#jobwall .fave").click(function(){
    var self =  $(this);
    $.ajax({
        url: "/favourites/save_employer", 
        type: "POST",
        data: "employer_id="+self.attr('href'),
        success:function() {
            self.removeClass('fave');
            self.addClass('faved');
        }
    });
    return false;
});

$(".faved").live("click", function(){
    alert("!!");
    return false;
});

2 个答案:

答案 0 :(得分:5)

您可以将.cl​​ick()事件包含在新对象中,而不是使用.live()。 像这样:

$("#jobwall .fave").click(function(){
    var self =  $(this);
    $.ajax({
        url: "/favourites/save_employer", 
        type: "POST",
        data: "employer_id="+self.attr('href'),
        success:function() {
            self.removeClass('fave');
            self.addClass('faved');
            self.click(function(){alert("!!"); return false;});
        }
    });
    return false;
});

.live()方法用于添加元素,而不是更改。记住这一点。

More information about .live() here

祝你好运:D


更新

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。

答案 1 :(得分:1)

从乱七八糟的情况看,我看起来好像那些return false;陈述正在妨碍你。您应该考虑使用event.preventDefault(); ......这样:

$("#jobwall .fave").click(function(event){
    event.preventDefault();

Check out this jsFiddle关于我的意思的一个例子