簡體   English   中英

腳本生成元素上的jquery click事件

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

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