2013-04-04 113 views
0

好日子,客戶端控制後觸發觸發JavaScript事件被渲染

我有一個網頁,其中用戶在下拉選擇。

只要下拉菜單中的項目被選中,就會出現Kendo網格,並顯示通過返回JSON的API調用檢索到的記錄列表。

我已經寫代碼,做某些修改,當網格顯示,但是這個代碼是由目前的按鈕觸發生成HTML表。這不是我想要的行爲。

我需要以某種方式在網格呈現後觸發事件,以便代碼自動執行並且不會被按鈕觸發。

是否有可能通過JQuery我可以以某種方式綁定事件以在網格控件完成呈現後觸發?

P.S.文檔中現有的Kendo網格事件都不能滿足我需要,甚至不需要數據源「requestEnd」,因爲那時候,網格的HTML還沒有在頁面中生成。像「postRender」或類似的事件會是理想的,如果它存在。

+0

對不起你挑戰,但什麼是你需要做的HTML的HTML轉型?也許有不同的方式,你可以直接渲染_correct_ HTML而不需要後期干預? – OnaBai 2013-04-04 11:58:32

回答

0

檢測'渲染'很難。 Firefox有一個MozAfterPaint事件,但它不是標準的,我不知道你將如何確保它只能解僱你的特定事件。

或者你可以嘗試尋找DOM突變事件,但他們不能很好地支持或者,有可能還是DOM變化和電網在瀏覽器UI更新之間的延遲。

最好的辦法是修改網格HTML以輸出一些觸發預定義回調的JS。

0

當你的JavaScript運行之前HTML內容呈現蜜蜂,請嘗試使用setTimeout(function() {}, 0)爲「暫停」的JavaScript執行,讓渲染線程趕上。所以,你的電話幾乎是這樣的:

$("#grid").kendoGrid({ 
    dataBound: function(e) { 
     setTimeout(function() { 
      console.log("dataBound"); 
     }, 0); 
    } 
}); 

瞭解更多關於:Why is setTimeout(fn, 0) sometimes useful?