私の質問を簡単にするために、私は 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 の背景色を変更して、別のステータス (YES または NO) を表示します。ボタンBをクリックすると、背景色が変更されますが、元の色に戻ります。$.ajax() を起動します (上記の場合、url:"doingSomethingTwo.php"を起動します)。2 回目のクリックでは、他の $.ajax(); はトリガーされません。
最も奇妙なことは次のとおりです。
上記のスクリプトから $.ajax() を削除すると、クラスを変更するだけで (または私のプロジェクトでは、ボタン B の背景色を変更するだけで)、機能します。ボタン B をクリックすると赤色に変わり、もう一度クリックすると黄色に戻ります。
ボタン B が動的に生成されていない場合、ボタン B がindex.phpのハードコードであるとしましょう。この場合、もちろんonを使用せずにイベントをバインドします。
$(".pill").click(function(){ //do something })
その後、すべてが順調です。背景色を変更し、それに応じて $.ajax を起動します。
誰かが私の問題を解決できる場合は、助けてください。前もって感謝します。