0

我有一点问题,脚本只工作一次,之后我需要刷新页面以删除最喜欢的文章(脚本就是为此)。

$("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(所以它很重要),但它什么也没做。所以我现在可以收藏,要从收藏中删除,我需要刷新,然后再次单击链接以从收藏中删除。

谢谢!

4

2 回答 2

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 时再次调用。

于 2013-08-25T16:59:22.900 回答
0

如果您使用需要 3 个参数并在文档上调用的 .on() 重载。然后随着 UI 元素的出现和消失,事件将保持关联。无需每次都重新添加。

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

请参阅此处的 .on() 描述。 http://api.jquery.com/live/

于 2013-08-25T17:08:20.123 回答