我正在尝试使用 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/