JQuery-更改一个元素的ID并在点击时调用一个函数

JQuery-更改一个元素的ID并在点击时调用一个函数

问题描述:

我有一个具有某个ID的元素,我更改了它的ID,当我单击该元素(现在使用新的ID)时,它仍然调用前一个函数IDJQuery-更改一个元素的ID并在点击时调用一个函数

$('#1st').click(function(){ 
 
    $('#1st').attr('id','2nd'); 
 
    alert("id changed to 2nd"); 
 
}); 
 
$('#2nd').click(function(){ 
 
    alert("clicked on second"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="javascript:;" id="1st">Click</a>

实施例是here

+0

ALWA这个帖子ys在问题中发布相关代码。 – 2014-12-05 21:05:43

+0

小提琴连接 – baig772 2014-12-05 21:06:11

+0

我无法打开链接... – 2014-12-05 21:06:48

因为你的元素存在之前添加事件。它没有找到一个元素。请在更改ID时附加事件,或者需要使用事件委派。

$('#1st').on("click.one", function(e) { 
 
     $('#1st').attr('id', '2nd'); 
 
     alert("id changed to 2nd"); 
 
     e.stopPropagation(); 
 
     $(this).off("click.one"); 
 
    }); 
 
    $(document).on("click", '#2nd', function() { 
 
     alert("clicked on second"); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="#" id="1st">Click</a>

+0

谢谢,它的工作:) – baig772 2014-12-05 21:13:35

+0

当他可以使用更好的授权时,这是很多额外的qork如fermis提议的那样 – SpYk3HH 2014-12-05 21:17:11

尝试做这种方式jsFiddle

$(document).on('click', '#2nd', function(){ 
 
\t \t alert("clicked on second"); 
 
\t }) 
 
\t .on('click', '#1st', function(e) { 
 
\t \t $('#1st').attr('id','2nd'); 
 
\t \t alert("id changed to 2nd"); 
 
\t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="#" id="1st">Click</a>

详情可参见Jquery's .on() versus .click()