次のように、phpで生成されたhtmlで構成されるナビゲーションバーがあります。
<ul>
<div class="container"><button type="button" name="1" class="delButton" alt="Delete"></button></div>
<a href="/" alt="Home">Home</a>
<div class="container"><button type="button" name="2" class="delButton" alt="Delete"></button></div>
<a href="/" alt="Events">Events</a>
<div class="container"><button type="button" name="3" class="delButton" alt="Delete"></button></div>
<a href="/" alt="Calendar">Calendar</a>
<div class="container"><button type="button" name="4" class="delButton" alt="Delete"></button></div>
<a href="/" alt="About Us">About Us</a>
</ul>
各セットは、削除ボタンとリンクで構成されています。ボタンの name 属性には、mySQL データベースに従って、それに続くリンクの一意の ID が含まれます。
次の jQuery コードを使用して、対応する削除ボタンがクリックされたときにリンクを削除しています。jQuery の ajax メソッドではなく、カスタムの ajax() メソッドを使用していることに注意してください。
$('.container button').click(function() {
if (confirm('Are you sure you wish to remove this link?'))
ajax('POST', '/deletelink.php', 'id='+this.name, function(xmlhttp) {
$('.nav ul').load('/getnav.php');
});
});
上記のコードは、削除ボタンのいずれかをクリックすると期待どおりに機能し、対応するリンクが削除されます。ただし、1 つのリンクを削除した後で別の削除ボタンをクリックしようとしても、何も起こりません。confirm() アラートボックスも表示されません。これは、2 回目の削除試行で click() 関数が入力されていないことを示しています。
これについての私の解釈は、関数が初めて実行されると、セレクターがクリックされた特定のボタンに解決されるということです。つまり、後で別の「.container ボタン」をクリックしても、この機能に関しては何の効果もありません。
私の評価は正しいですか?もしそうなら、関数がセレクターを特定のオブジェクトに解決するのを防ぐ方法はありますか? そうでない場合、現在設定しているすべての削除ボタンに対して 1 つの機能を使用できる代替手段はありますか?