我在一个元素上有一个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;
});
答案 0 :(得分: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()方法用于添加元素,而不是更改。记住这一点。
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关于我的意思的一个例子