jquery mobile没有加载对象?

时间:2011-12-02 22:39:11

标签: jquery jquery-mobile

我无法在连续页面上加载:

$(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的文档位置。

1 个答案:

答案 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.readywindow.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小部件的方法。