jquery - 为什么更改链接 ID 后执行相同的功能?

标签 jquery ajax dom attr favorite

我正在尝试使用 jquery 和 php 创建一个添加/删除收藏夹。 addfavorite 函数可以工作,但是当我将链接的 id 属性从 addfavorite 更改为 removefavorite 时,它​​不起作用。 id 改变了,但它仍然执行 addfavorite 功能。 如果我打开 firebug,我会看到 id="removefavorite"中的 ID 已更改,但是当我打开页面源时,它没有更改 ID='addfavorite'

即使在 dom 中,我也可以使用 jquery 更改链接的 ID 吗?

JQUERY:
$(document).ready(function() {
$('#addfavorite').click(function() {
    id = $('#item').attr('value');
    $.ajax({
        type: "POST",
        url: "http://127.0.1.1/zend/fm/public/video/addfavorite",
        data: "id_video="+id,
        cache: false,
        async: false,
        success: function(result) {
            $('#addfavorite').attr('id','removefavorite');
            $('#removefavorite').text('Remove from favorite');
        getRating(text);
        },
        error: function(result) {
            alert("some error occured, please try again later");
        }
    });
});

$('#removefavorite').click(function() {
    id = $('#item').attr('value');
    $.ajax({
        type: "POST",
        url: "http://127.0.1.1/zend/fm/public/video/removefavorite",
        data: "id_video="+id,
        cache: false,
        async: false,
        success: function(result) {
            $('#removefavorite').attr('id','removefavorite');
            $('#removefavorite').text('Remove from favorite');
        getRating(text);
        },
        error: function(result) {
            alert("some error occured, please try again later");
        }
    });
});
)};

HTML:
<a href="javascript:void(0)" id="addfavorite">
    Add to favorite
</a>

最佳答案

首先,您将使用多少个使用 ID 属性的链接?请记住,ID 仅适用于单个元素。 我建议您使用切换功能 http://api.jquery.com/toggle-event/ 来执行此操作.

我猜代码不起作用,因为您使用了 .click 事件而不是 .live 事件,并且当您将其绑定(bind)到 click 事件时,#removefavorite 事件不存在(因为它是 #removefavorite)。还要记住,事件被分配给元素,因此元素可以更改属性并仍然保留事件。如果您不想使用切换或实时功能来执行此操作,则可以在分配另一个点击事件之前取消绑定(bind)第一个点击事件。

此外,Firebug 会动态显示修改后的 DOM,这就是为什么您可以看到它的变化。当您执行查看源代码时,您正在查看下载的原始 HTML 文档(没有任何 javascript 对其进行更改)。

我还建议您使用 Firefox 的 FireQuery 扩展:它会向您显示该元素的绑定(bind)事件(如果您使用 jQuery 进行开发,还会显示其他有用的数据)

希望我的第一篇文章对您有所帮助:)

关于jquery - 为什么更改链接 ID 后执行相同的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8667967/

相关文章:

jquery - 如何比较时间戳

javascript - Chrome : Dynamically created &lt;style&gt; tag does not have content?

javascript - Jquery 替换 html,仅在更改的地方

php - Laravel 5.1 xmlHttpRequest AJAX POST TokenMismatchException

JQuery 有趣的问题

javascript - JQuery 或 vanilla Javascript 中的 DOM Mutation 事件

javascript - 在 IE 中使用占位符的 ContentEditable Div 中错误的焦点位置

jQuery Ajax 成功消息显示一个大 HTML 文件

javascript - 使用 jQuery 检测 iPad 用户?

java - 如何让搜索引擎搜索到动态网站