jQuery脚本只能运行一次

我没有什么问题,脚本只工作一次,之后我需要刷新页面来删除喜欢的文章(脚本是为了那个)。

$("a.fav_no").on('click', function () { var id = $(this).attr("id"); $(this).load("{$homepage}/user_action.php?action=fav&id="+ id +"").addClass("fav_yes"); }); $("a.fav_yes").on('click', function () { var id = $(this).attr("id"); $(this).load("{$homepage}/user_action.php?action=remove_fav&id="+ id +"").removeClass("fav_yes"); }); 

在控制台中,我在点击后多次获得文章(div)的id(因此它计数),但它没有做任何事情。 所以我现在可以只是最喜欢的,从我喜欢的我需要刷新的删除然后再次点击链接从collections夹中删除。

谢谢!

如果使用带有3个args的.on()重载并在文档上调用。 然后,当UI元素来去时,事件将保持连接状态。 无需每次都重新添加它们。

$(document).on(“click”,“a.offsite”,function(){…..

请在此处查看.on()的说明。 http://api.jquery.com/live/

如果要替换负责捕获事件的html,则应该再次初始化这些事件捕获器。

像这样:

 initEvents() { $("a.fav_no").on('click', function () { var id = $(this).attr("id"); $(this).load("{$homepage}/user_action.php?action=fav&id="+ id +"").addClass("fav_yes"); }); $("a.fav_yes").on('click', function () { var id = $(this).attr("id"); $(this).load("{$homepage}/user_action.php?action=remove_fav&id="+ id +"").removeClass("fav_yes"); }); } 

然后你在页面加载时调用initEvents,而不是在替换html时调用。