【问题标题】:jquery click event not firingjquery点击事件没有触发
【发布时间】:2017-07-26 15:40:37
【问题描述】:

我在一个元素上有一个点击事件,将它的类从“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;
});

【问题讨论】:

  • 什么样的 HTML 元素有 id 'jobwall' ?这很重要,因为并非所有 HTML 元素都允许 onClick 事件。

标签: javascript jquery dom-manipulation


【解决方案1】:

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

More information about .live() here.

祝你好运:D


更新

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

【讨论】:

    【解决方案2】:

    从我做的那些乱七八糟的事情来看,那些return false; 声明似乎妨碍了你。你真的应该考虑使用event.preventDefault();... 这样:

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

    Check out this jsFiddle 举例说明我的意思

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      相关资源
      最近更新 更多