2010-03-29 185 views
3

我使用jQuery AJAX调用将一些代码附加到我的页面。此代码是html和javascript的混合。但我希望JavaScript只有在html部分准备就绪时才能执行。但是当附加html被渲染时引发了什么事件?Html呈现事件

下面是一个例子:

<table id="sampleTable"> 
    ... 
</table> 

<script> 
    // this code should be executed only when sampleTable is rendered 
    $('#sampleTable').hide(); 
</script> 
+0

当你说HTML部分准备好了,是从AJAX调用返回的HTML,然后被插入到DOM中,并且当插入发生时你想要运行一些JavaScript?我的理解正确吗? – 2010-03-29 21:35:10

+0

是的,这就是我需要的。但是JavaScript也是从AJAX调用中返回的。 – SiberianGuy 2010-03-29 21:51:54

回答

2

包装你的javascript “就绪” 的处理程序。这会在DOM更新时触发,无疑是你想要做的。

$(function() { 
    $('#sampleTable').hide(); 
}); 
1
$(document).ready(function() { 
    $('#sampleTable').hide();  
}); 

http://api.jquery.com/ready/

+0

我更喜欢快捷方式'$(function(){...});' – tvanfosson 2010-03-29 21:38:16

+1

我不喜欢。我也使用bind('the-event')。猜猜我很特别! – Matt 2010-03-29 21:52:41

+1

+1 .bind FTW:D – Leo 2010-03-29 21:54:21

6

使用jQuery的准备()事件:

$(document).ready(function() { 
    $('#sampleTable').hide(); 
} 

<edit>这似乎是不可能的调用任何其他对象不是文档在准备时,我的坏</edit>

这是一个选项,如果你在说abo UT斯达康成功的Ajax请求之后触发事件:

$('#sampleTable').ajaxComplete(function() { 
    $(this).hide(); 
}); 

或者只是硬编码表中显示的风格:无; ...

+0

如果在订阅“准备就绪”事件之前准备好了,该怎么办? – SiberianGuy 2010-03-29 21:38:05

+0

@tvanfosson:这不是我猜的吗?他使用sampleTable.ready,快捷方式是文档。准备好了 - 如果这甚至是可能的,以前从未听说过:D – Leo 2010-03-29 21:38:46

+0

@Mef - 是的。我没有仔细观察它 - 只是从另一个答案中剪切/粘贴我的评论。就绪事件只适用于DOM(文档),而不是特定的元素。我会使用DOM就绪事件处理程序。对于特定的元素,您需要使用“加载” - 稍有不同。 – tvanfosson 2010-03-29 21:47:57

1

你同时装入了<table><script>到文档立刻? 请勿

<script>元素插入页面使用html()/load()是非常不可靠的。该脚本不直接从innerHTML包含;不同的浏览器将这种插入的脚本元素区别对待jQuery试图解决这个问题,但并不完全正确(可能无法完全正确)。

最好将静态代码保存在静态脚本中,以便调用者知道它必须在AJAX调用完成并插入内容后在表上调用hide()。如果你真的回传动态代码运行,保持它与HTML分开,例如。通过返回一个包含HTML和代码成员的JSON对象。