在jquery中模仿jquery mobile的changePage和pageinit

时间:2014-02-22 05:39:34

标签: javascript jquery html jquery-mobile

我现在有两个html网页page Apage B当我从page A移动到page B时,点击按钮即可使用window.location.href page A

现在我想要的是每当page B加载我想要load只发生page B事件时

例如,这是page B

的内容

 <body>

       <div id="myList">
               <h1>Page B </h1>
      </div>

 </body>

我想知道两件事

  1. 每当page B加载时,我想捕获load的事件page B
  2. 每当div代码myList加载时,我想抓住其load事件
  3. 我已尝试关注myList加载,但没有任何事情被解雇,我不知道我应该使用什么特定页面加载,即仅page B

    $("#myList").on('load',function(){ });
    

    我正在使用jqyery 1.9,简而言之,我想模仿jquery mobile的changePagepageinit功能

2 个答案:

答案 0 :(得分:0)

我认为我们的解决方案太过“太远了”,我们需要退回去看树林。从最远的距离来看,也许您可​​能根本不应该有两个页面,而是根据开关加载内容框。

但是现在让我们忽略它。如果您要说的就是从第A页开始“计算”来自页面B的负载,那么我们需要查看引用URL。通过查看document.referrer值可以轻松完成。因此,在第B页:

$(function(){
  var hasRun;

  if ( ! hasRun && document.referrer === '<http_path_to_doc_a>' ) {
    // do something
  }

   hasRun = true;
});

这应该可以解决问题。请注意,一旦DOM准备好,$()闭包就会执行该函数。正如您所发现的,'load'事件仅适用于某些DOM元素,而不适用于任意节点。我认为jquery会考虑document.load,但我必须将其视为100%肯定。无论如何,即使考虑到这一点,也不需要这样做。

不应该使用hasRun标志,但永远不要太小心。至少在这个便宜的时候:)

如果完全限定的HTTP / S路径过于约束,您可能会对referrer字符串进行一些处理,以使匹配更加宽松。例如:

refer_str  = document.referrer;
refer_list = refer_str.split('/');
file_name  = refer_list.pop;
file_path  = refer_list.join('/');
if ( ! hasRun && file_name === 'pageB.html' ) { ... // as before
祝你好运!

答案 1 :(得分:0)

答案略微取决于您加载页面的确切操作。在页面B中,您可以使用jQuery的document ready

<script>
    $(document).ready(funciton () {
        // do whatever...
    });
</script>
该函数运行时将加载

<div id="myList">。 如果你使用javascript构建页面,你可以触发特定元素的加载事件,但除非你有充分的理由这样做,否则它并不理想,因为它要慢得多。