$(function() {
var content = $('#content');
$('a').on('click', function(e) {
History.pushState(null, $(this).text(), $(this).attr('href'));
return false;
});
History.Adapter.bind(window, 'statechange', function() {
var state = History.getState();
content.html('loading...');
$.get(state.url, function(response) {
content.html($(response).filter('#content').html());
});
});
});
我想使用pushState
更改页面内容,但实际上每个内容可能都有不同的JavaScript运行,我有两种方法可以解决它
on
绑定事件#content
内,因此,当渲染内容也会渲染脚本第一个解决方案会让js文件更大更复杂,第二个解决方案会导致html文件难看,有没有更好的解决方案?
答案 0 :(得分:1)
我已经完成了第二个选项并且效果很好。请注意<script>
代码will be stripped and added to the bottom。
您实际上正在使用$.get
您可以使用.load()代替.get()
,.html()
和.filter()
content.load( state.url+" #content" );
它专门用于将一个元素的html加载到另一个元素中。