2013-04-30 53 views
-1

http://portfolio.paulchelmis.com/design/design的.html()事件沒有其他的.html內工作()插入

上一個組合的網站工作,到目前爲止,我已經能夠通過搜索等,以找出我的很多扭結的每一個,直到現在。無論如何,請點擊右側網格中的第一個或第二個鏈接。我的問題是關於jQuery的.html()方法 - 我已設置,以便當單擊其中一個信息卡.thumbinfo時,#detailtext#detailimages內的html使用上述方法插入。

這工作正常 - 但#detailtextdiv裏面我有兩個Next和Prev按鈕(.btnnext & .btnlast),用於改變「頁」不首先關閉了。問題是,我似乎無法讓這些按鈕觸發,除非他們被從他們的父div中取出。更重要的是,據我所知,這些按鈕不會觸發任何事件,不僅僅是.html命令。

我在#clicked<a>標記中包了一個以確保它不僅僅是z索引問題或其他東西。

無論如何...有沒有解決這個問題,或者我應該找到解決方法?任何見解都非常感謝。

TL; DR:jQuery的.html事件或任何事件,在被以前注入的html(來自.html()方法)的元素INSIDE觸發時似乎沒有工作。

+3

你好,它有助於顯示代碼snippits。另外,你應該在jsfiddle中創建你的問題,而不是發佈你的網站。 – smerny 2013-04-30 15:20:00

+0

處理動態創建/注入的元素時,始終使用'.on()'附加事件處理程序。 – billyonecan 2013-04-30 15:21:09

+0

這很可能是一個事件委託問題。看起來你正在替換下一個/ prev按鈕,導致他們的事件發生在\ * poof \ *。我還沒有導航到您的網站,但(可能不會),你應該在這裏發佈相關的代碼/ HTML。 – 2013-04-30 15:22:10

回答

1

通過動態添加元素,您需要使用jQuery的.on()函數來綁定頁面中已存在的元素。

事件處理程序只綁定到當前選定的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。

例如,綁定點擊事件動態添加錶行,綁定到文件(或理想的元素在DOM接近獲得更好的性能):

$(document).on("click", "tr", function(event){ 
    alert($(this).text()); 
}); 
+0

這是我的預感,但它似乎沒有解決問題。當添加這樣一行時,該功能起作用,包括刪除原始.click()綁定後,但仍不會改變動態添加按鈕的行爲。我認爲這是因爲我給了他們與原始觸發器相同的ID,因此認爲(希望)他們會有相同的行爲而不必反彈。 – theoriginalpol 2013-04-30 15:47:17

+0

如果你在這裏發佈你的代碼,或者更好的創建一個jsFiddle。網絡例子我可能可以幫助你進一步。但有一個問題,你是否說你要複製ID? – j08691 2013-04-30 15:51:16

+0

創建新元素時,具有這些ID的以前元素會被刪除,反之亦然。所以,技術上不是同時存在的。 W3C會仍然恨我嗎? – theoriginalpol 2013-04-30 15:59:29