我的coffeescript中有这段代码:
$('.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 :(得分:3)
(针对问题编辑进行了大量编辑)
.ready
只是文档的有效事件。对于$
的参数不是document
的情况,jQuery's documentation for ready
没有定义行为。也就是说,没有什么可以阻止你定义一个按你想要的方式行事!不是监听就绪事件,而是发明一个自定义事件(比如readyForSplunk
)并在适当的时候触发它。
文档或要创建的asdasd
div的更近的父级应该有一个委托处理程序来监听readyForSplunk
事件。创建asdasd
div的js按钮也应triggerHandler
('readyForSplunk')
新div。
答案 1 :(得分:1)
ready
在DOM is ready时运行。如果您只想在相关元素位于页面中的情况下运行它,您可以执行以下操作:
_get = ->
$.ajax '/splunk/100000000',
type: 'GET'
cache: false
success: (html) ->
$('.splunk_results').append html
$('.asdasd').each ->
_get()
_get = ->