所以,我终于想出一个ajax回调不会加载脚本标签之间的页面内容。我已经尝试了多年如何找出问题(这里没有jquery专家)。我已经阅读了很多并观看了视频 - 使用.load而不是.html,使用eval,追加,将脚本放在标题中....
无论如何,这些方式也可能有效,但我正在使用的方法基于我观看的视频: [http://www.ajaxvideotutorials.com/V11Videos/jquery_evaluateJavascriptInScriptTagsInAjaxResponse.swf] [1]
在插入我的大块代码之前,我正在尝试使用简单的代码。但为什么我的代码在这里不起作用?我的应用程序是一个rails应用程序。
这是我的ajax代码,在scripts.js文件中。需要注意的关键是:
$(".page-content .testing").find('script') function(){
alert(eval(value));
}
所有其他ajax的东西在那时工作得很好 - 这是我试图用来显示脚本标签之间的代码,在测试类中,这是在页面内容中
$(document).on("ready", function(){
var ajax_loaded = (function(response) {
$(".page-content")
.html($(response).filter(".page-content"));
$(".page-content .ajax").on("click",ajax_load);
$(".page-content .testing").find('script') function(){
alert(eval(value));
}
});
var form_submit = (function(e) {
e.preventDefault();
var url = $(this).attr("action");
var method = $(this).attr("method");
var data = {}
$(this).find("input, textarea, select").each(function(i){
var name = $(this).attr("name");
var value = $(this).val();
data[name] =value;
});
$.ajax({
"url": url,
"type": method,
"data": data,
"success": ajax_loaded,
"error": function () {alert("bad");}
});
});
var history = [];
var current_url_method;
var ajax_load = (function(e) {
e.preventDefault();
history.push(this);
var url =$(this).attr("href");
var method = $(this).attr("data-method");
if (current_url_method != url + method) {
current_url_method = url + method;
$.ajax({
"url": url,
"type": method,
"success": ajax_loaded,
});
}
});
$("#menu a").on("click",ajax_load);
$("#menu a.main").trigger("click");
$(".search-box form").on("submit", form_submit);
// $("#t_and_c").trigger("click");
});
在我的show.html.erb文件中,我有:
<div class ='page-content'>
<div class = "testing">
<script type="text/javascript">
value=10
</script>
</div>
</div>
感谢您的帮助!克里斯
答案 0 :(得分:0)
如果我没有弄错,如果你想要任何一个类的元素,它们必须以逗号分隔。如果你想要两者都有元素,那么就没有空间。
$(".page-content,.testing").find('script') function(){
alert(eval(value));
}
或
$(".page-content.testing").find('script') function(){
alert(eval(value));
}