Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用同一按钮实现两种不同的行为_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用同一按钮实现两种不同的行为

Javascript 如何使用同一按钮实现两种不同的行为,javascript,jquery,Javascript,Jquery,我创建了一个click事件,它改变了按钮的标识符。我在同一个按钮上创建了第二次单击事件,但这次使用了新id。当我单击按钮时,第二次。我总是有第一个使用旧id的行为。下面是更好地说明此示例的代码。这个想法是用同一个按钮做两种不同的行为 $('#button').on('click',function () { $(this).attr('id','buttonBis'); }); $('#buttonBis').on('click',function () { alert('he

我创建了一个click事件,它改变了按钮的标识符。我在同一个按钮上创建了第二次单击事件,但这次使用了新id。当我单击按钮时,第二次。我总是有第一个使用旧id的行为。下面是更好地说明此示例的代码。这个想法是用同一个按钮做两种不同的行为

$('#button').on('click',function () {
    $(this).attr('id','buttonBis');
});

$('#buttonBis').on('click',function () {
    alert('here');
});

如果要动态更改标识符,则需要使用委派事件处理程序:

$(文档)。在('单击','按钮',函数()上){
$(this.attr('id','buttonBis');
});
$(文档)。在('click','#buttonBis',函数()上{
警报(“此处”);
});


单击我两次以查看alert()
Create函数,该函数通过将dom节点替换为其列来将事件分配给新的按钮id并删除附加的(防止重复)事件,
$('#按钮')。在('click',函数(){
$(this.attr('id','buttonBis');
//克隆节点,然后重新签名到同一节点
//这将删除以前附加的事件
var self=this.cloneNode(true);
$(this).替换为(self);
newevent();
});
var newevent=函数(){
$('#buttonBis')。在('click',函数(){
警报(“此处”);
});
}


单击我两次
2 id代表1个按钮?就像@Rory McCrossan所说的那样。我应该更改类而不是ID。比另一个好得多+是的,你说得对。导致id使项目唯一。我将通过添加一些类来改变这一点。谢谢您,仅供参考,而不是
this.parentNode.replaceChild…
jQuery有一个
replaceWith()
方法可以使用