我在ajax成功调用中使用下面的代码片段更改了锚标记ID。
<a id="followUser" data-userid="96" href="#" title="Follow"><i class="fa fa-user-plus" aria-hidden="true"></i></a>
我已经检查过html也改变如下。
$("#followingUser").click(function(e){
但是,当我再次点击此按钮时,它正在调用此功能
$("#followUser").click(function(e){
但它应该调用此函数,因为id现在已更改
ConcurrentHashMap
答案 0 :(得分:0)
事件被绑定到元素,而不是它们的id。 click事件已经绑定到该元素,虽然之后名称发生了变化 - 这就是为什么$("#followingUser").click(function(e){
中的代码仍然有效的原因。查看下面的代码段。如果您希望在更改元素的ID时删除已绑定的click事件,则可以使用$.off
取消绑定事件
$(document).ready(function(){
$("#followingUser").click(function(e){
alert("old button id");
});
$(document).on("click","#followUser", function (){
alert("new button id");
});
$("#followingUser").off("click");
$("#followingUser").attr('id','followUser');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="followingUser" type="button" value="test">
答案 1 :(得分:0)
使用.on
和.off
解除您使用该元素进行的先前绑定:
$(document).off('click', '#followingUser').on('click', '#followUser', function(){alert("Voilah followUser!")});
$(document).off('click', '#followUser').on('click', '#followingUser', function(){alert("Voilah followingUser!")});