如何运行javascript哪个文件是由pushState加载的

时间:2015-03-02 02:42:58

标签: jquery pushstate

$(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());
        });
    });
});

browserstate/history.js

我想使用pushState更改页面内容,但实际上每个内容可能都有不同的JavaScript运行,我有两种方法可以解决它

  1. 在一个脚本中编写所有可能的函数,使用jQuery on绑定事件
  2. 将JavaScript放在#content内,因此,当渲染内容也会渲染脚本
  3. 第一个解决方案会让js文件更大更复杂,第二个解决方案会导致html文件难看,有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

我已经完成了第二个选项并且效果很好。请注意<script>代码will be stripped and added to the bottom

您实际上正在使用$.get

来调整内容

您可以使用.load()代替.get().html().filter()

content.load( state.url+" #content" );

它专门用于将一个元素的html加载到另一个元素中。