我无法在连续页面上加载:
$(window).load(function(){
$('.container').find('img').each(function(){
var imgClass = (this.width/this.height > 1) ? 'wide' : 'tall';
$(this).addClass(imgClass);
})
})
我最近阅读了JQuery Mobile .page() function causes infinite loop?,但我不确定.mobile
或.page
的文档位置。
答案 0 :(得分:1)
您绑定到window.load
事件,该事件仅在初始页面加载时触发。在jQuery Mobile中,每次导航到另一个页面时,它都会通过AJAX进入DOM,因此不会发生整页刷新。这就是您需要使用page-event
绑定到.delegate()
的原因。 page-events
会在与其相关的特定data-role="page"
元素上触发。例如,如果您有一个ID为some_id
的网页,则可以通过以下方式绑定到该网页的pagecreate
事件:
$(document).delegate('#some_id', 'pagecreate', function(){
alert('Alright, it worked!');
});
如果要将事件绑定到站点中的所有伪页面,则此选择器将起作用:
$(document).delegate('[data-role="page"]', 'pagecreate', function(){
var $page = $(this);
$page.find('.container').find('img').each(function(){
var $image = $(this),
imgClass = ($image.width()/$image.height() > 1) ? 'wide' : 'tall';
$image.addClass(imgClass);
})
});
此代码块不需要放在document.ready
或window.load
事件处理程序中,只能全局包含。
查看有关jQuery Mobile事件的文档:http://jquerymobile.com/demos/1.0/docs/api/events.html
要详细了解$.mobile
签出此页面以及您可以使用的不同功能:http://jquerymobile.com/demos/1.0/docs/api/methods.html
.page()
已被折旧,有利于trigger('create')
。这是初始化任何jQuery Mobile小部件的方法。