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

时间:2013-01-15 04:43:36

标签: jquery jquery-mobile prepend

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我之前遇到过同样的问题。我的问题在于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 .

那就是