1

如何在函数运行期间更改按钮的 ID?

我试过了:

$('#follow').attr('id','unfollow'); 

但是当我尝试运行一个$("#unfollow").click(function(){函数时没有运气。

我怎样才能做到这一点?

更新

$(function() { 

  $("#follow").click(function(){ 
    $('#follow').attr('id','unfollow'); 
    alert("follow");
    });

  $(document).on('click', '#unfollow', function() {
    $('#unfollow').attr('id','follow'); 
    alert("unfollow"); 
    });

});
4

4 回答 4

11

您编写的代码应该可以工作,但是您是否在更改 id 属性后绑定了 click 事件?

如果没有,则on改为使用绑定点击事件。

$(document).on('click', '#unfollow', function() { ... });

顺便一提:

我不认为更改元素的 ID 是一个好习惯。ID 在页面上应该是唯一的。

为什么不通过更改元素类(使用addClassremoveClass方法)或向元素添加数据(通过data方法)来做到这一点?

更新

尝试这样的事情:

$(document).on('click', '.follow', function() {
    alert('follow');
    $(this).removeClass('follow').addClass('unfollow');
});
$(document).on('click', '.unfollow', function() {
    alert('unfollow');
    $(this).removeClass('unfollow').addClass('follow');
});

**注意我如何使用使用类而不是 id 的选择器,因此您必须为元素提供正确的类(初始状态的关注/取消关注)

于 2012-04-30T18:14:50.130 回答
1
$('#follow').attr('id','unfollow'); 

更改idthen 后:

首先试试这个:

$("#unfollow").click(function(){

});

否则现场活动:

$('body').on('click', '#unfollow', function(){

});

注意: live()已弃用。因此,如果您真的需要现场活动,请尝试第二个,并且用户 jQuery 1.7.x

于 2012-04-30T18:15:40.283 回答
1

问题是只有在元素当时存在$("#unfollow").click(function(){时才绑定到元素。$("#unfollow")我的猜测是您在更改 ID 之前将 click 事件绑定到其他地方。

您可以将其设为现场活动,如下所示:

$(document).on('click', '#unfollow', function(){

注意:document您应该使用更接近的父元素而不是#unfollow. 只要确保该元素保留在 DOM 中,如果它被删除,事件也是如此。

$("#unfollow").click(function(){或者,您可以在更改 ID 后重新绑定事件(使用):

$('#follow').attr('id','unfollow');
$("#unfollow").click(function(){
于 2012-04-30T18:16:30.010 回答
1

为了将事件附加到尚不存在的元素,您必须使用$.live

$("#unfollow").live('click', function(){
于 2012-04-30T18:15:34.153 回答