我通過Ajax加載內容,然後我將擁有像$('。my_content_class')這樣的元素,並像這樣在$('。my_content_class')中加載數據。 ,但是如何匹配我加載到.my_content_class的新內容中的所有元素?我嘗試過但根本沒有效果。如何選擇jQuery中加載的Ajax內容中的所有鏈接?
$('.my_content_class a').each(function()
{
doSomething($(this));
});
我通過Ajax加載內容,然後我將擁有像$('。my_content_class')這樣的元素,並像這樣在$('。my_content_class')中加載數據。 ,但是如何匹配我加載到.my_content_class的新內容中的所有元素?我嘗試過但根本沒有效果。如何選擇jQuery中加載的Ajax內容中的所有鏈接?
$('.my_content_class a').each(function()
{
doSomething($(this));
});
實際上你可以從你的Ajax內容做到這一點直接如果需要的話,而無需將其加載到另一個容器
$('a', content_returned_from_ajax).each(function() {
//dostuff
});
您必須使用jQuery的live()函數。它是在jQuery 1.3中添加的。
$('.my_content_class a')
是做它的方式。您可能遇到的情況是您在加載內容之前運行該功能。 AJAX異步工作,因此在繼續下一行代碼之前,腳本不會結束,直到內容加載完畢。您應該將代碼放在load
方法回調中,以便在AJAX請求完成他的工作後執行。
var url = 'http://example.com/test.html';
var data = {var1: foo, var2: bar};
$('.my_content_class').load(url, data, function() {
// this will be executed after the content was successfully loaded
});
從我可以在文檔閱讀回調調用一次AJAX完成其工作,我不知道這是否是實際內容加載到DOM樹後。你需要自己弄清楚,如果它已經完成,你必須在更新DOM後在回調函數中創建一些小的延遲才能啓動。 setTimeout
可能會來得方便,但首先我會確保你需要那部分。
+1的詳細答案。 – rahul 2009-08-28 07:16:31
可以使用load函數的回調參數知道裝載完成的確切時間,然後你可以選擇你的元素:
$('.my_content_class').load(url, function() {
var anchors = $('a', this); // all loaded anchor elements
});
我用這個,但是其他的答案也不錯啊...... – newbie 2009-08-28 07:17:29