2013-12-17 89 views
2

我正在拾取由其他人創建的JQuery項目(總是很有趣)。在加載後創建的對象上使用jQuery選擇器

看起來原來的作者是在頁面元素的翻轉上創建一個彈出窗口。彈出窗口有按鈕,例如「類= deleteBtn」。本來,我是無法得到此鏈接到與「上」方法的典型jQuery選擇點擊迴應,所以我不得不這樣做:

$(document).on('click', '.deleteBtn', function() { 
     alert('foo')   
    }); 

這確實顯示警報。但是,現在我需要隱藏並顯示此彈出框中的元素,並且我再次遇到選擇器問題。例如,這不起作用:

$(document).on('click', '.deleteBtn', function() { 
     $('.prompt1').hide(); 
    }); 

凡PROMPT1是在酥料餅的第一個div,.deleteBtn的祖先。

我在這裏錯過了什麼?

+1

只要該元素存在於點擊該按鈕時,這應該沒問題。 – tymeJV

+1

可能有更多的.prompt1 ...所以你選擇了錯誤的 –

回答

1

最重要的是,在你開始黑客攻擊之前,需要花時間瞭解以前的程序員在想什麼。不要只在代碼上敲巴巴的代碼,然後在「不起作用」時會感到沮喪。尊重以前開發者的努力。學習並理解他們的代碼;進入他們的頭腦,並找出他們用來解決問題並滿足要求的系統。

話雖這麼說...

  1. 我的第一直覺是有必然有問題的DOM元素等事件,他們常常包含對event.preventDefault()的調用。這可能會阻止你的事件發射。

  2. 這些元素附加了哪些其他事件?將單擊事件附加到文檔並對.deleteBtn類進行作用域很奇怪;還有其他事情正在發生。事件代表團是否被用於這些彈出?如果是這樣,委託事件可能會覆蓋您的事件。

  3. 當你說「popover」,這意味着一個單獨的瀏覽器窗口(記得那些舊的「popunder」廣告?)。你的意思是這個,一個飛出,還是一個模態?如果您正在討論飛出或模式,他們可能會使用模板插件,如lightbox。如果是這樣,請嘗試確定他們使用哪個插件創建彈出窗口。如果他們是自定義的,仔細看看用來顯示和隱藏它們的系統。

  4. 檢查您的CSS爲z-index設置。不能告訴你我被這個人咬了多少次。如果z-index設置不正確,div 就是正確顯示......但是在其他內容下面!請記住,要使z-index起作用,容器div必須具有位置樣式集;例如位置:相對,位置:絕對等。

  5. 您是否收到任何錯誤?

希望這有助於!

相關問題