2012-07-19 35 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