我想從插件中調用一個函數,但該函數位於主頁面上,而不是插件的.js文件。調用駐留在插件主頁中的函數?
編輯
我有jQuery的解析非常大的XML文件和建築,隨後,一個大名單(當動態內容複製,粘貼,然後保存1.1 MB HTML文件),具有擴大通過/摺疊功能插入。 IE瀏覽器的整體性能超級慢,並且由於頁面/ DOM太大而假設。
我目前正在嘗試保存在event.data中的摺疊內容,當它被摺疊並從DOM中刪除它,然後當它被告知要展開時將它收回...我遇到的問題是當我帶回內容時,顯然「點擊」和「懸停」事件消失了。我試圖重新分配它們,目前是在插件擴展內容後在插件內部進行分配的。然而,問題在於我說的.click()中聲明的函數沒有定義。另外,懸停事件似乎並沒有被重新分配或者....
if ($(event.data.trigger).attr('class').indexOf('collapsed') != -1) { // if expanding
// console.log(event.data.targetContent);
$(event.data.trigger).after(event.data.targetContent);
$(event.data.target).hide();
/* This Line --->*/ $(event.data.target + 'a.addButton').click(addResourceToList);
$(event.data.target + 'li.resource')
.hover(
function() {
if (!($(this).attr("disabled"))) {
$(this).addClass("over");
$(this).find("a").css({'display':'block'});
}
},
function() {
if (!($(this).attr("disabled"))) {
$(this).removeClass("over");
$(this).children("a").css({'display':'none'});
}
}
);
$(event.data.target).css({
"height": "0px",
"padding-top": "0px",
"padding-bottom": "0px",
"margin-top": "0px",
"margin-bottom": "0px"});
$(event.data.target).show();
$(event.data.target).animate({
height: event.data.heightVal + "px",
paddingTop: event.data.topPaddingVal + "px",
paddingBottom: event.data.bottomPaddingVal + "px",
marginTop: event.data.topMarginVal + "px",
marginBottom: event.data.bottomMarginVal + "px"}, "normal");//, function(){$(this).hide();});
$(event.data.trigger).removeClass("collapsed");
$.cookies.set('jcollapserSub_' + event.data.target, 'expanded', {hoursToLive: 24 * 365});
} else if ($(event.data.trigger).attr('class').indexOf('collapsed') == -1) { // if collapsing
$(event.data.target).animate({
height: "0px",
paddingTop: "0px",
paddingBottom: "0px",
marginTop: "0px",
marginBottom: "0px"}, "normal", function(){$(this).hide();$(this).remove();});
$(event.data.trigger).addClass("collapsed");
$.cookies.set('jcollapserSub_' + event.data.target, 'collapsed', {hoursToLive: 24 * 365});
}
編輯
因此,擁有新的眼光確實有差別。當我在週末離開後在今天上午審閱這篇文章中的代碼時,我發現我犯了錯誤。
此:
$(event.data.target + 'a.addButton').click(addResourceToList);
應該是這個(a.addbutton前注意空格):
$(event.data.target + ' a.addButton').click(addResourceToList);
同樣的問題,與 「li.resource」。所以它從來沒有指向正確的元素......謝謝你,雷內,你的幫助!
你可以發佈一些代碼示例,顯示addResourceToList的定義位置和方式嗎? – grahamparks 2009-06-12 20:25:56