コードは、タブごとにHTML+JSを生成します。これで、各タブに、PHPを使用してHTML内で生成される2つのボタンがあります。また、JQueryを使用してボタンごとにJavascriptonclickイベントを生成しました。
これは、生成される各ボタンのjqueryクリックイベントです。
<script type="text/javascript">
$(function() {
$(document).on("click", ".mybutton", function(e) {
e.preventDefault();
alert($(this).attr('whoami'));
return false;
});
});
</script>'
これで、htmlによって生成される2つのボタンの構造は次のようになります。
<button type="button" class="mybutton" whoami="button_1">First Button</button>
<button type="button" class="mybutton" whoami="button_2">Second Button</button>
これで、htmlとJSの両方が正常に生成されます。両方のボタンが正常に表示され、JSエラーは発生しません。両方のボタンをクリックできますが、次のようになります。
最初のボタンをクリックすると、次のように警告されます。
button_1
button_2
クラス名が同じであるため、両方のボタンクリックが実行されます。両方のボタンが実行されないようにするにはどうすればよいですか?クリックしたボタンだけを実行する必要があり、すべてではありません。
e.stopImmediatePropagation()を追加しようとしましたが、次のようになります。
最初のボタンをクリックすると、アラートが正しく表示され、button_1クリックのみが実行されますが、2番目のボタンをクリックすると、button_2ではなくbutton_1クリックイベントのみが実行されます。
助けてください。
注: 両方を実行すると思う理由は、htmlに追加される2つのjavascript部分があり、両方のスクリプトに.buttonのクリックイベントがありますが、このコードを変更できないため、クリックされたボタンのみが実行されることを確認する必要があります。