2012-07-19 56 views
1

我有我的CoffeeScript這一大塊代碼:AJAX獲取調用,即使文檔未加載

$('.asdasd').ready -> 
    $.ajax '/splunk/100000000', 
    type: 'GET' 
    cache: false 
    success: (html) -> 
    $('.splunk_results').append html 

asdasd DIV根本不存在 - 然而,在我的控制檯,我可以看到一個。打電話給正在取得/ Splunk的/ 10000000" 這究竟是爲什麼

編輯:

我認爲這個問題可能與事實div的問題不加載初始頁面做的事情 - - 頁面充滿了偏色,而div只加載了另一個js的點擊,但是噸,修改DOM。我基本上想知道這個div何時存在,當它發生時,發出一個新的請求並用該請求的結果填充div。

+0

是這個代碼包裹在['DOMReady'(HTTP://文檔。 jquery.com/Tutorials:介紹_ $(document).ready())事件? – MilkyWayJoe 2012-07-19 18:02:55

回答

3

(響應大量編輯質疑編輯)

.ready只對文件有效的事件。 jQuery's documentation for ready未定義對$的參數不是document的參數的情況下的行爲。也就是說,沒有什麼能夠阻止你定義一個以你想要的方式行事的事件!而不是聽現成的事件,發明一個自定義事件(例如,readyForSplunk),並在適當的時候觸發它。

該文檔或將要創建的asdasd div的某個更近的父級應該有一個代理處理程序監聽readyForSplunk事件。創建asdasd div的js按鈕也應該是triggerHandler('readyForSplunk')新的div。

+0

這是一個很好的觀點。我添加了一個編輯來進一步指定我的問題 – maxko87 2012-07-19 18:30:09

+0

@ maxko87答案擴展以響應編輯。 – 2012-07-19 23:00:27

1

ready運行時DOM is ready。如果你只希望它運行,如果有問題的元素是在頁面中,你可以做這樣的事情,而不是:

_get = -> 
    $.ajax '/splunk/100000000', 
    type: 'GET' 
    cache: false 
    success: (html) -> 
     $('.splunk_results').append html 

$('.asdasd').each -> 
    _get() 
    _get = -> 
+0

不幸的是,這對我不起作用,它可能與我上面編輯的編輯有關 – maxko87 2012-07-19 18:15:53