为了让我的问题简单,我有 index.php 看起来像这样:
<button>A</button>
<div id="DivHolder"></div>
首先,我单击按钮 A(在index.php中)并触发事件:
$.ajax({
url:"getButtonB.php"
})
然后在 $.ajax 成功后,我得到了一个按钮 B(它是从 getButtonB.php 生成的)并附加到index.php最后,在index.php中,它看起来像这样:
<div id="DivHolder"><button class="pill YES">B</button></div>
接下来,javascript代码:
$("#DivHolder").on("click",".pill",function(){
var thisButton=$(this);
if(thisButton.hasClass("NO")){
$.ajax({
url:"doingSomethingOne.php",
type:"POST"
});
thisButton.removeClass("NO");
thisButton.addClass("YES");
}else if(thisButton.hasClass("YES")){
$.ajax({
url:"doingSomethingTwo.php",
type:"POST"
});
thisButton.removeClass("YES");
thisButton.addClass("NO");
}
});
这就是这里所有的代码,我想要这些代码是当我点击按钮A时,我得到一个按钮B。然后我点击按钮B,它会做一些事情,比如注册一个营地,如果我再次点击按钮B,它将注销营地。所有不同的是按钮 B 的类。如果有类YES,则单击取消注册。如果有班级NO,则点击注册。
但是这些东西不起作用,在我的实际项目中,我更改了按钮 B 背景颜色以显示不同的状态(是或否)。因此,当我单击按钮 B 时,它的背景颜色已更改,但右更改为原始颜色。并触发 $.ajax(),(在上述情况下,它触发url:"doingSomethingTwo.php")。在第二次点击时,它不会触发另一个 $.ajax();
最奇怪的是:
如果我从上面的脚本中删除 $.ajax() ,也就是说我只是更改了类(或者在我的项目中,只需更改按钮 B 背景颜色),那么它就可以工作了;单击按钮B,它变为红色,再次单击它再次变为黄色。
如果按钮 B 不是动态生成的,假设按钮 B 是index.php中的硬代码,在这种情况下,我当然不会使用on绑定事件,只是使用
$(".pill").click(function(){ //do something })
然后,一切都很好。它会同时改变背景颜色并相应地触发 $.ajax。
如果有人能解决我的问题,请帮助我。提前致谢。