为什么我必须刷新每个页面以使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 .
就是这样