2

内部のタグの有無にかかわらず、奇妙な動作がaあります。img

レコードのリストであるテーブルを含む php ページがあります。すべての行の最後に、行を削除するためのボタンがあります。

これは私のテーブルのコードです:

<div class='edit' >
    <a id='20' href='#' return;>
        <img src='images/edit.png'  />
    </a>
</div>

メインテーブルのすべてのレコード、すべての行には、上記のコードがあり、ID は互いに異なります。

私のスクリプトコードは次のとおりです。

$("#delete a").click(function(e) {

e.preventDefault();

$('#action').val("delete");
$('#keyAction').val(this.id);

$.ajax({
        type: "POST",
        url: "processAttivita.php",
        data: $("#attivita_form").serialize(),
        error: function(msg) {
            $("#errore").html(msg);
        },
        success: function(msg) {
            // display the errors returned by server side validation (if any)
            ricaricaLista();                

        }
    });     

 // end click delete event  
 });

画像をクリックして削除しようとする最初の行は正常に機能します。2番目のものでは、jqueryが「クリック」イベントをバインドせず、a要素のデフォルトのhrefが発生し、href属性の「#」が原因で同じページに残っているようです。

<a>2回目のjqueryがelementのクリックをインターセプトしない理由はありますか?

4

1 に答える 1

5

#delete a1 つの (通常は最初の) 要素にのみ一致する ID セレクターを使用しています。

などのクラスを使用してみてください.delete a

1 つの要素しか取得しない理由は、JQuery が pass #through todocument.getElementByIdで始まるすべてのセレクターを最適化し、1 つの要素のみを返すためです。

イベント委任を使用して同じことを実現する方法の例を次に示します。

$("#tableid").click(".delete a", function(e) {
    // your code
});

class="delete"あなたのhtmlはテーブルにIDを持ち、削除リンクのコンテナに与える必要があります。

于 2013-02-07T23:15:26.377 に答える