我正在使用AHAH在文檔準備好後加載一段HTML。在我想要應用.click事件的HTML塊中有一個按鈕。加載HTML後,我無法應用該事件。回調是非常通用的,由頁面的其他部分使用,所以我不想用特定的代碼填充它。有任何想法嗎?如何使用JQuery將事件應用於動態加載的DOM節點?
回答
正如其他人都指出,要考慮使用$.live()
,這將處理事件的所有預先存在的DOM元素,以及後來添加任何的道路。
$(".foo").click(function(){
// I don't do anything to dynamicall-added elements
});
這個例子將僅適用於:例如,假設您加載HTML塊點擊時有一組包含類名「富」,所有這些都應該在一個特定的方式響應鏈接包含類名「foo」的預先存在的項目。爲了應對當前和未來的元素,我們應做到以下幾點:
$(".foo").live("click", function(){
// I handle both present, and future elements
});
現在添加任何東西在任何時候將這個如果它包含的類名「foo」的處理。這適用於像你的情況,在頁面的生命週期中稍後會將大塊html插入到DOM中。
完美!這就是訣竅!多謝你們。 – Matt 2010-02-19 20:09:53
考慮使用的.live()方法:http://api.jquery.com/live/
同意,如果它只是您想要管理的.click()事件。並非所有事件都適用於.live() – 2010-02-19 19:19:21
這就是live
方法的建立。
最好的選擇是使用它,或者將event listener添加到您的包含元素中(或者甚至添加body
)。 Live
非常適合泡泡的活動。事件監聽器是不支持的解決方案。
我想你將不得不使用live方法來反應動態加載的內容。
正如大家所說的.live()方法是專門爲此目的而設計的,並且您正在討論.live()處理的點擊事件,所以繼續前進並使用它,它將是最簡單/最快的方法來完成這一點。
只是一個建議,雖然你說你有一個非常通用的回調函數,對於一個非常類似的情況我不能使用.live()(我不得不做一些相當複雜的處理),所以我增加了靈活性通過向初始調用添加一個參數,以便調用代碼可以指定自定義回調。類似的規定:
callToAGenericService({url: '...', target: someId, callback: function myCustomCallBack (xhr) {
console.log('Custom callback');
console.dir(xhr);
}});
和通用服務通用回調被修改成類似的規定:
function genericServiceCallback(options,xhr) {
//Do the 'generic processing' of the request
// if calling code specified a custom callback, execute it
if (options.callback) {
options.callback(options,xhr);
}
}
這顯然要複雜得多(誤差範圍處理爲主),但給出了一個理念。
- 1. 如何將jquery Click事件應用於動態列表元素?
- 2. 如何將效果僅應用於新添加的節點(jQuery)
- 3. 動態DOM節點與jQuery的
- 4. jQuery onload - .load() - 事件不適用於動態加載的iframe
- 5. 使用jQuery動態點擊onload事件
- 6. 將節點添加到DOM時發生反應的jQuery事件(或破解)
- 7. 使用DOM將節點值添加到xhtml中使用DOM
- 8. 如何使用Rails動態加載jQuery?
- 9. 將事件綁定到可以動態加載的DOM元素
- 10. 如何使用事件偵聽器複製DOM節點?
- 11. 如何使用jQuery將動態命名事件附加到動態元素
- 12. 動態DOM節點的快照控件
- 13. 使用jQuery動態添加onClick事件
- 14. JSTree - 動態加載節點
- 15. 添加 「點擊」 事件動態的div使用jQuery
- 16. 使用DOM動態更新的點擊事件
- 17. 如何使用StreamingMarkupBuilder將節點動態添加到Groovy中
- 18. 與事件綁定功能動態插入的DOM節點
- 19. 使用jquery動態加載css文件
- 20. 你將如何使用jQuery將新JavaScript加載到DOM中?
- 21. 如何使點擊事件加載事件jquery
- 22. 如何掛接DOM加載的事件?
- 23. 使用'this'在節點的子節點上應用事件
- 24. 使用javascript/jQuery將觸摸事件應用於每個點擊事件
- 25. 動態地將點擊節點作爲加載節點的父節點 - jsTree
- 26. drupal7 - 使用ajax加載節點(jQuery)
- 27. jQuery動態使用Ajax創建節點
- 28. 如何加載js文件並動態應用於div?
- 29. 將基於節點的材質應用到OBJ加載器(r79)
- 30. 將事件綁定到使用jQuery加載的內容加載
我有另一種方法,如果這不涉及.click()事件 - 哪個.live()處理。只要讓我知道你是否需要這個。 – 2010-02-19 19:20:59