[英]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.