[修订]
嗨,谢谢你的反馈。我按问题btw修改了。 为了使事情更清楚,这是我的html页面(仅样本)
<html>
<head>
<body>
<form>
<div class="loadAjax"></div>
<div class="toggle">[form inputs here]</toggle>
<a href="#" class="btn">Submit</a>
</form>
<script>[several js scripts here]</script>
</body>
</html>
这是我的主要js文件:
$(function() {
[some lines here]
$('.toggle').toggle();
$('.btn').on('click', function(e) {
e.preventDefault();
$.ajax({
url: 'http://example.com/ajaxpage',
type: 'POST',
data: $('form').serialize(),
beforeSend: function() {
...
},
success: function(data) {
$.getScript('js/main.js');
$('.content').html(data);
}
});
});
});
将在div.loadAjax中加载的页面。
<div class="toggle">ajax page load</div>
以此为例,主页面上的切换似乎有效。但是div.loadAjax上的div.toggle却没有。我需要设置$ .getScipt()才能重新加载main.js文件。 div.loadAjax不应该继承main.js,因为它已经在第一个位置加载了吗?为什么我仍然需要使用$ .getScript()?
重新加载它注意:我使用ajax在PHP页面上做表格发布。
再次感谢!
答案 0 :(得分:1)
切换的代码已在您的首页加载时执行。如果没有页面重新加载,这将不会自动再次执行,否则您必须再次触发它或者应该像现在一样再次加载脚本。
尝试将其附加到点击事件并使用.trigger
$(function() {
[some lines here]
$(".toggle").on("click", function(){
$('.toggle').toggle();
});
$('.toggle').trigger("click");
$('.btn').on('click', function(e) {
e.preventDefault();
$.ajax({
url: 'http://example.com/ajaxpage',
type: 'POST',
data: $('form').serialize(),
beforeSend: function() {
...
},
success: function(data) {
$('.content').html(data);
$('.toggle').trigger("click");
}
});
});
});
答案 1 :(得分:0)
为什么不使用$.load()
方法:http://api.jquery.com/load/
这将允许您执行Ajax调用,将结果注入页面的DOM,并支持执行通过请求加载的脚本。