为什么我必须刷新每个页面以使jQuery在每个页面上正常工作?

我正在使用jQuery Mobile,我试图将一个简单的列表项从一个页面移动到另一个页面。 这是我正在使用的一段代码:

$('#YesNoMaybePage, #summaryPage').live('pageinit', function() { $('.green, .blue, .red').click(function(){ var $move = $('.purchase').prependTo("#summaryPage .theListItem"); }); }); 

现在这很好用,当我刷新#summaryPage ,单击返回#YesNoMaybePage并执行该事件。 但是,如果我刷新#YesNoMaybePage而不是执行它,它就#YesNoMaybePage 。 当我刷新#YesNoMaybePage时,我认为#summaryPage上的html没有加载,而这就是它无法正常工作的原因,但老实说我不知道​​。 任何想法可能是什么以及如何解决这个问题?

谢谢一堆世界。 我爱你。 为了进一步说明这里是另一个代码片段,我有一个完全相同的问题代码:

 $('#YesNoMaybePage, #categorizePage').live('pageinit', function() { $('.green, .blue, .red').click(function(){ var $move = $('.purchase').prependTo("#categorizePage .theListItem"); }); }); 

这两个’页面’同时在dom中吗? 您似乎正在尝试将html元素添加到当前未显示的页面。 那不会飞,你只能修改当前加载的dom。

这可能是因为您的javascript包含在您的summarypage.html中,而不是在您的yesnomaybepage.html中。 这是jqm的预期行为。 您必须在网站的每个页面中包含相同的js,或者将所有页面打包到一个html文件中。 http://jquerymobile.com/demos/1.2.0/docs/pages/multipage-template.html

我之前有同样的问题。 我的问题在于turbolink。 通过禁用它,它对我来说非常有效。 这是一种非常简单的删除方式:转到app/assets/javascripts/application.js

 //= require jquery //= require jquery_ujs //= require twitter/bootstrap //= require turbolinks //= require_tree . 

只需删除turbolink前面的等号即可

 //= require jquery //= require jquery_ujs //= require twitter/bootstrap // require turbolinks //= require_tree . 

就是这样