[英]jquery click event on script generated element
我有這個腳本:
<script>
$(document).ready(function() {
$('.block-link').click(function() {
$('body').addClass("gallery-on");
});
$('body').delegate('.ps-toolbar-close', 'click', function() {
$('body').removeClass("gallery-on");
});
});
</script>
當我單擊任何.block-link
時,腳本應該將.gallery-on
類添加到body
。
.ps-toolbar-close
元素是通過插件 (相當不錯的btw!)生成的,該插件會在單擊任何.block-link
時創建一個模式燈箱。
該腳本的第一部分正在工作,第二部分應該從主體中刪除.gallery-on
類,但它只是關閉燈箱,然后將主體類放置在原處。
我究竟做錯了什么? 我很不幸,是使用javascript和jquery的初學者。
我最好的猜測是,由於頁面加載時文檔中尚不存在.ps-toolbar-close
,因此腳本的第二部分沒有放置任何單擊處理程序,盡管我認為.delegate()
能夠處理現有元素,我錯了嗎?
謝謝你的幫助!
這很可能是由於委托方法的一個有趣的屬性。 從jQuery文檔中:
補充筆記:
由於.live()方法一旦將事件傳播到文檔頂部便會對其進行處理,因此無法停止實時事件的傳播。 類似地,由.delegate()處理的事件將傳播到它們所委派的元素; 到委托事件處理程序被調用時,綁定到DOM樹中其下任何元素的事件處理程序將已經執行。 因此,這些處理程序可以通過調用event.stopPropagation()或返回false來阻止委托處理程序觸發。
模態對話框的close方法在DOM中向下附加,並在主體處理程序之前被調用,並防止處理程序正確觸發。
嘗試綁定到對話框的close事件 ,然后在其中刪除類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.