我有一个Ajax请求来更新网页的一部分。这是我做过的代码:
render :update do |page|
page.replace_html "my_id", :partial => "my_partial"
end
作为此更新的一部分,我想加载一些新的JavaScript,它处理这个新加载的页面部分的行为。
我直接包含在部分中的JavaScript可以完美地运行:
<script type="text/javascript">
alert('reached');
</script>
但是,我在部分内部加载的JavaScript没有加载:
<script type="text/javascript" src="/javascripts/myScript.js"></script>
这样做的正确方法是什么?
答案 0 :(得分:1)
我尝试了以下操作,它似乎有效,不确定它是否适用于您的情况,您可能需要重写原型的javascript:
<script type="text/javascript">
var e = document.createElement('script')
e.setAttribute("type","text/javascript");
e.setAttribute("src", 'url_of_js_external');
document.getElementsByTagName('head')[0].appendChild(e);
</script>
答案 1 :(得分:0)
使用jQuery的live框架应该做你想要的。在这里举了一个例子
$('.doit').live('click',function(){
$(this).addClass('red');
});
基本上,您可以使用live来在页面上查看与您的选择器匹配的新dom元素并响应它们上的事件。这样你的javascript就会被提前加载,但只有在ajax发生时才绑定