2015-06-14 41 views
2

我正在嘗試將ajax調用應用格式設置爲在完成之前不會存在的元素。在實際呼叫中使用成功功能不起作用。該函數被正確調用,但找不到該元素('.content-cell'),大概是因爲它還不存在。大多數類似的回答涉及事件代表團,但不適用風格。Ajax調用後的格式化元素

我是否正確接近?在ajax檢索之後應用樣式和處理程序的最佳方法是什麼?

$("#calendar-panel").load("url", setupCal()); 


function setupCal(){ 
    console.log("setupCal"); 
    var cell_width = $('.weekday-cell').width(); 
    if ($('.content-cell').length){ 
     console.log("Content cell exists"); 
    } else { 
     console.log("Content cell does not exist"); 
    } 
    $('.content-cell').css({height:cell_width}); 

此代碼的控制檯輸出爲:'setupCal'; '內容單元不存在'。

回答

2

我認爲這個問題可能是你正在調用執行load函數的行中的setupCal函數。這是因爲你已經包含了實際執行函數的圓括號(並返回結果),而不是將其作爲回調參數傳遞。

你可以嘗試只引用函數的名稱,在該行像這樣:

$("#calendar-panel").load("url", setupCal); 

如果setupCal函數被調用,而被「定義」的load功能,那麼該元素將肯定還不存在並因此給你你看到的輸出:「」內容單元不存在「」。

+0

Upvoted,thanks。這似乎是問題所在。然而,我有一個後來的函數,需要用特定的參數來調用,我不確定這是如何工作的。另外,官方的jquery文檔展示了一個與負載一致的函數。那是怎麼回事。 – Preston

+1

該文檔顯示了一個函數定義,是的..但它不是用括號「手動」執行的。內聯回調(如文檔中所示)可以很好地觸發對不同函數的調用,並允許您以更具可讀性和更靈活的方式傳遞參數。您只需在回調中對您的單獨功能進行調用即可。 – Lix