2009-08-10 44 views
1

我有一個加載圓角div的頁面。並且在每個div(包括所有內部div,跨度在這個div內)我都會調用許多與它們相關的事件。現在我面臨的問題是加載時間。當我將鼠標移到主div上時,我們是否有任何方法可以首先在「ready」函數中加載用於圓角的腳本並動態地加載其餘事件?任何減少我的加載​​時間的方法都會很有幫助!如何在jQuery中以編程方式觸發事件?

例子:

$(function(){ 
    $('.inner').corner({ 
     tl: { radius: 6 }, 
     tr: { radius: 6 }, 
     bl: { radius: 6 }, 
     br: { radius: 6 } 
    }); 

    // loadDivEvents() in this we call the rest of the events upon 
    // mouseover or any other event without multiple calls 

}); 

function loadDivEvents(){ 
    //this may have many events/ajax calls 
} 
+1

你能舉一些例子代碼嗎? – 2009-08-10 13:54:12

回答

0

我用圖像而不是div來解決這個問題。我發現它是解決這個問題的最好方法。

0

什麼是帶負載時的實際問題,如果我可以問嗎?

第一次加載頁面時,任何與事件相關的函數(通常)只會綁定到頁面中的元素,以便在事件發生時和事件相關函數執行。所以我不知道這是否會真正影響您的網頁加載時間。

什麼會影響您的頁面加載時間,因爲您正在嘗試在頁面加載時一次關聯一個與事件相關的函數。例如,如果我有10個列表,並且每個列表都有10個列表項,並且我希望列表項中的任何項在懸停時都變成綠色 - 如果我的JavaScript分別定義了這100個事件中的每一個,那麼可能會增加我的開銷。

但是!

如果我將這些事件的綁定移動到頁面加載後發生,當我第一次將鼠標移到主div(或窗口,或任何幾乎總是會發生的事件)上時,會發生這種情況,傳遞給THAT事件。該頁面已加載,但現在它在處理事件時被凍結。我的用戶真的很煩,因爲他無法向下滾動,如果問題很嚴重,他無法關閉頁面或切換到另一個窗口。他期待這一點,當頁面被永久加載時,現在只是這種隨機的凍結總是發生在他去你的頁面時。

所以,如果有頁面加載問題,更好的解決方案可能是找出是否有冗餘或不必要的功能運行。在上面給出的例子中,我可以簡單地說:「當任何列表項目被挖空時,它們變成紫色」,這是一個綁定,而不是100個。或者我可能犯了一個簡單的錯誤,就是讓這100個綁定中的每一個實際上做了某事比如檢查列表項的值),它只是在觸發事件後才需要做的事情,而不是在頁面加載期間。這將是100個攤位,我甚至不希望在頁面加載時發生一次。

+0

是的,你是對的...正如你所說,頁面加載主要取決於「冗餘或不必要的功能運行」。我試圖優化代碼。主要的加載時間是由於我正在使用的圓角腳本。但我只是想知道是否有辦法做這樣的事情(在準備好的功能中只有少量事件,而當我將鼠標懸停在特定的div上時會觸發事件的剩餘部分)。無論如何感謝您的答案。 – kayteen 2009-08-10 14:43:56

+0

我不確定它是否會有所幫助,但是您是否嘗試過模塊化腳本的兩個部分?一個js文件中的彎曲角落和另一個js文件中的事件?看看你有沒有運氣可能會先把另一個放在一起?你正在使用什麼圓角的腳本?在過去的一年裏,我一直都沒有得到任何好運,但是我還是沒有得到好運。你是否嘗試過使用CSS(-moz-border-radius)做圓角轉角來確認頁面加載得很好,並且在刪除圓角腳本時看起來正確? – Anthony 2009-08-10 18:49:30

+0

我試過模塊化...但它仍然是一樣的。 即將到來的「與CSS(-moz-border-radius)圓角」這隻適用於Mozilla ...但有沒有辦法讓它在IE中工作? 現在我正在使用這個,http://blue-anvil.com/archives/anti-aliased-round-corners-with-jquery 這個腳本需要我很多時間。 – kayteen 2009-08-11 04:47:46

相關問題