jQuery更改按钮id时不使用';行不通
我正在编写一个程序,当用户登录时,登录按钮将更改为注销按钮。代码如下:jQuery更改按钮id时不使用';行不通,jquery,Jquery,我正在编写一个程序,当用户登录时,登录按钮将更改为注销按钮。代码如下: $("#signin").button().click(function(){ $("#dialog-user").dialog("open"); }); $.post('php/in.php',function(data){ $("#signin").attr('id','out'); }); $("#out").button().click(function(){ alert("clicked ou
$("#signin").button().click(function(){
$("#dialog-user").dialog("open");
});
$.post('php/in.php',function(data){
$("#signin").attr('id','out');
});
$("#out").button().click(function(){
alert("clicked out");
});
我在这两者之间输入了一些代码,但基本上,当用户成功登录时,#sign button的id将更改为#out。但是,当我单击id为#out的new按钮时,它不会显示我指定的警报(“clicked out”)。它仍然显示#对话框用户,就好像按钮id仍然是#登录
请帮助我解决此问题。您需要使用事件委派,因为绑定单击事件(即页面加载时)时,
\out
不存在
#out
不存在
$(document).on('click',"#out",function(){
alert("clicked out");
});
或
$(signin static ancestor).on('click',function(e) {
if(e.target.id === 'signin') {
$("#dialog-user").dialog("open");
}
else if(e.target.id === 'out') {
alert("clicked out");
}
});
对于这种情况,您需要将事件委托给静态祖先。As事件**绑定到元素,而不是元素的属性 试试这个方法
$(document).on('click',"#out",function(){
alert("clicked out");
});
或
$(signin static ancestor).on('click',function(e) {
if(e.target.id === 'signin') {
$("#dialog-user").dialog("open");
}
else if(e.target.id === 'out') {
alert("clicked out");
}
});
在您的示例中,id在事件绑定后更改,不提供任何可将事件绑定到的内容。在post函数中单击out按钮可以确保当我们从服务器获取数据时,我们会更改id,然后分配事件
在您的示例中,id在事件绑定后更改,不提供任何可将事件绑定到的内容。在post函数中单击out按钮可以确保当我们从服务器获取数据时,我们会更改id,然后分配事件
.post()
是异步的。当你不再是初学者时,你打算做什么?@watson到时候我会看到:p我还有很多东西要学。post()
是异步的。当你不再是初学者时,你打算做什么?@watson到时候我会看到:p我还有很多东西要学