2011-04-22 61 views
0

我仍然是一個jQuery新手,我試圖將ThemeForest模板集成到我的項目中。這個ThemeForest模板(vPanel)非常棒,但它集成了很多jQuery插件和功能,所以我有很多$(document).ready()到處都是,而且我很難搞清楚哪個腳本做了什麼。我之所以尋找這個功能,是因爲所有這些腳本在初次加載時都能很好地應用到頁面上,但也有一些部分是通過AJAX加載的。這就是我的問題開始的地方:有沒有辦法將所有腳本重新應用到通過AJAX加載的部分HTML?

回答

5

你在找什麼是live() event。您可能要回去和改變某些插件,使之類的東西

$("my_button").click(function(){ } 

成爲

$("my_button").live("click", function(){ } 

其中「my_button」是有可能通過AJAX晚。

+1

甚至更​​好,使用委託()。 – kapa 2011-04-22 17:33:39

+0

沒有修改插件沒有解決方案?這將是瘋狂的,它看起來像一個非常常見的用例! – Sebastien 2011-04-22 18:16:14

0

如果腳本所做的所有事情都是掛鉤事件,則可以使用delegate方法(代替live方法)將它們掛接到包含元素。

如果腳本對元素做了其他更改,則需要使用上下文參數,以便可以將更改重新應用到頁面的特定部分。例如:

function applyTemplate(context) { 
    $('.someclass', context).each(function(){ 
    // does something with the elements 
    }); 
} 

$(function(){ 
    // apply to whole page: 
    applyTemplate(document.body); 
    // load more content, and apply to what's loaded: 
    $('#somePart').load('getpart.aspx', function(){ 
    applyTemplate($('#somePart')); 
    }); 
}); 
+0

問題是我不知道如何實現applyTemplate()函數,因爲模板是由一堆加載在標題中的jquery插件腳本組成的。所以我更想找一種方法來簡單地重新應用它們。 – Sebastien 2011-04-22 17:58:08

相關問題