2012-11-19 34 views
0

我需要自動調用DOM元素上的函數。下面的代碼有效,但我想知道是否有更好的方法。使用jQuery在元素上調用函數

$('#toc > ul > li').first().find('a').each(loadTopic); 

我的選擇器只會返回一個元素,所以運行「each」看起來很駭人聽聞。有沒有更好的方法在我的錨元素上調用「loadTopic」?

+0

這真的取決於你的HTML佈局,但這不是真正的地方對於這種類型的問題。 [嘗試在這裏,而不是](http://codereview.stackexchange.com)。 – SpYk3HH

+1

以及所有的尊重,我不認爲它應該取決於我的佈局。底線是我想選擇一個元素並調用一個函數,而不是綁定到任何事件(點擊等)。我的選擇器工作。我只是想知道是否有更好的方法。 – Brett

+0

我的觀點很簡單,根據您的HTML,可能有更好的方式來獲得選擇,但是,因爲它,我真的沒有更好的方式,除了可能縮短它像這樣:'$('#toc> ul> li:first a')。each(loadTopic);'。 ':first'與'.first()'相同,然後a標籤當然與'.find('a')' – SpYk3HH

回答

0

使用.each大約是盡善盡美這裏,不僅是因爲它會自動從jQuery對象中通過本機的DOM元素,而不是包裹在jQuery對象本身。哎呀,它甚至設置this是你的元素。

你可以實現一個.call()插件,只能在一個jQuery對象中的第一個元素,但它是有點兒毫無意義......

0

創建簡單的jQuery插件,並呼籲$('#toc > ul > li').first().find('a').myPlugin();

+0

相同 - 不是一個好的答案 - 任何行爲良好的插件都會在內部調用'.each '反正...... – Alnitak

+0

如果你有一個元素,每個元素都不會被使用,但是我的解決方案會更好一點 –

相關問題