簡體   English   中英

如何在同一個Ajax中同時使用on()和委托()?

[英]How can I use both on() and delegate() for the same ajax?

我有3層數據顯示:

基本的HTML結構:

<article id="container">

    <header>
    <h1>Tier One (PHP Loop) <a href="#" class="confirm">X</a></h1>
    </header>
    <section> <!-- Filled by ajax call from Tier 1 -->

         <h2>Tier Two <a href="#" class="confirm">X</a></h2>
         <section>  <!-- Filled by ajax call from Tier 2 -->

             <p>Tier Three <a href="#" class="confirm">X</a></p>
             <p>Tier Three <a href="#" class="confirm">X</a></p>
             <p>Tier Three <a href="#" class="confirm">X</a></p>
             <p>Tier Three <a href="#" class="confirm">X</a></p>
             <p>Tier Three <a href="#" class="confirm">X</a></p>
             <p>Tier Three <a href="#" class="confirm">X</a></p>

         </section>

    </section>

</article>

我試圖通過ajax調用來建立數據庫刪除按鈕,該調用由在每一層中的單擊引發。


$('a.confirm').on('click', function (e) {
    e.preventDefault();
    $.ajax({ }); 
});

適用於第1層,但不適用於第2層和第3層...


$('#container').delegate('a.confirm', 'click', function (e) {
    e.preventDefault();
    $.ajax({ }); 
});

要么

$('#container').on('click', 'a.confirm', function (e) {
    e.preventDefault();
    $.ajax({ }); 
});

適用於第2層和第3層,但不適用於第1層...


函數中的所有其他內容幾乎相同。 有一些變量,但是它們都從錨(id等)中提取相同的基本data ,然后ajax只是從處理程序發送php不同的數據。

我可以輕松地復制jQuery代碼並更改處理程序。 但是我確信必須有一種方法可以將處理程序合並為一個語句。

我已經嘗試過諸如$('#container, header').delegate()$('#container, h1').delegate()事情,但這並沒有改變。

我也嘗試沒有運氣的bind()live()

這可能嗎?

我正在使用jQuery 191和jQuery UI 1114,如果有區別的話。

從jQuery 1.7開始,.delegate()已由.on()方法取代。

您想要的是on()事件委托,如下所示:

$('#container').on('click', 'a.confirm', function (e) {
    e.preventDefault();
    $.ajax({ }); 
});

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM