2011-03-28 105 views
2

這可能是jquery的基礎知識,但我無法找到一個解決方案之後大量的谷歌搜索。將函數綁定到DOM中插入的元素? (隱含的?)

如何將「非事件」附加到DOM中插入的元素? 對於事件,如點擊,我們可以使用live()bind()。 例如,您會如何將tabs()addClass()初始化爲新元素?

具體而言,我試圖讓tabs()在ajax加載對話框的內容中工作,但我認爲正確的解決方案應該適用於任何情況。

我確實看到一個涉及$('body').mousemove()的伎倆,它確實有效,但它仍然對事件有約束力,顯然是黑客行爲。

例如,如何獲得addClass()在新插入的表格行上觸發?

我的意思是隱式做到這一點,這意味着我不想爲每個向dom添加節點的事件寫出具體的指令,我只是希望它「在後臺運行」。

讓我知道如果這需要澄清,我看到很多類似的問題,但沒有幫助的答案。

編輯:簡單的例子:一個頁面調用$('a').addClass('highlight'),它在頁面中的所有錨上工作。一個新的錨點然後通過jQuery動態添加到頁面中,但不會添加該類。我試過各種各樣的bind(),trigger()和change()方法,但是我恐怕我在吠叫錯誤的樹。

+0

需要澄清... – Neal 2011-03-28 16:51:11

+0

到目前爲止你做了什麼? – Neal 2011-03-28 16:52:48

回答

3

你需要看看livequery它可以讓你的東西應用到新加入的元素

另外,如果您的添加元素,你可以做

$('body')append('<div>some content</div>').tabs(); 

或類似的東西

+0

我確實遇到過livequery,但並不確定這是我以後的事情,我要快速瀏覽一下,謝謝。 – 2011-03-28 16:58:52

+0

@Madmartigan我稍微修改了我的答案 – mcgrailm 2011-03-28 16:59:55

+0

這正是我所追求的!非常感謝,從現在開始,這個腳本將成爲我所有工作的核心組件。完美的作品。 – 2011-03-28 17:04:32

0

我知道我可能在這裏與你的「非事件」規則相矛盾,但只是說你想要「觸發」某種事物,你已經暗示某種事件。

在這種情況下,我可以建議jQuery自定義事件嗎?您可能想要創建自定義事件,然後在代碼中的某處手動觸發它。它不是自動的(比如當你添加一行,BOOM,它會觸發™),但這與我所描述的最接近的東西是可以想到的。

具體來說,你可能想看看jQuery的.bind().trigger()方法。

相關問題