jquery更改按钮ID

时间:2012-04-30 18:12:31

标签: jquery button

如何在功能运行期间更改按钮的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 个答案:

答案 0 :(得分:10)

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

如果没有,则使用on来绑定click事件。

$(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');
});

**注意我是如何使用使用class'而不是id的选择器的,所以你必须给元素赋予适当的类(跟随/取消关注初始状态)

答案 1 :(得分:1)

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

更改id后:

首先尝试一下:

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

});

其他直播活动:

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

});

注意: live()已弃用。如果你真的需要一个直播活动,那么试试第二个,用户jQuery 1.7.x

答案 2 :(得分:0)

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

$("#unfollow").live('click', function(){

答案 3 :(得分:0)

问题是$("#unfollow").click(function(){仅绑定到$("#unfollow")元素(如果它当时存在)。我猜你是在更改ID之前将click事件绑定到别处。

你可以把它变成现场活动,如下:

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

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

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

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