1

我在一个元素上有一个点击事件,将它的类从“fave”更改为“faved”,然后我试图触发一个新的 clicked 事件,如果在它的类被喜欢时单击该元素,但它没有触发,这里是我的 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;
});
4

2 回答 2

5

您可以将 .click() 事件包含到新对象中,而不是使用 .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() 方法用于添加元素,而不是更改。记住这一点。

更多关于 .live() 的信息在这里

祝你好运:D


更新

从 jQuery 1.7 开始,该.live()方法已被弃用。用于.on()附加事件处理程序。

于 2011-06-22T15:29:15.883 回答
1

从我做的事情来看,这些return false;陈述似乎妨碍了你。你真的应该考虑使用event.preventDefault();... 这样:

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

查看这个 jsFiddle以了解我的意思的示例

于 2011-06-22T15:37:57.000 回答