如何在功能运行期间更改按钮的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");
});
});
答案 0 :(得分:10)
您编写的代码应该可以使用,但是在更改id属性后是否绑定了click事件?
如果没有,则使用on
来绑定click事件。
$(document).on('click', '#unfollow', function() { ... });
顺便说一下:
我不相信更改元素的ID是一个好习惯。 ID应该在页面上是唯一的。
为什么不通过更改元素类(使用addClass和removeClass方法)或向元素添加数据(通过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(){