jQuery脚本只能运行一次

时间:2013-08-25 16:55:34

标签: javascript jquery jquery-load

我没有什么问题,脚本只运行一次,之后我需要刷新页面来删除喜欢的文章(脚本就是这样)。

$("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(所以它数了),但它没有做任何事情。所以我现在可以只是喜欢,从我喜欢的我需要刷新的删除然后再次点击链接从收藏夹删除。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果要替换负责捕获事件的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被替换时再次。

答案 1 :(得分:0)

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

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

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