重定向后 jQuery Mobile ListView 刷新

标签 jquery html jquery-mobile refresh jquery-mobile-listview

当从浏览器调用时,页面 feed.html 工作正常,但是当通过 a href="feed.html" 页面加载从另一个页面调用它时,但内部的 ListView 不显示.

适用于 feed.html 的脚本包含 $('#feedList').listview('refresh'); 并且从直接 url 调用时工作正常。

所以每次我需要在重定向后刷新页面才能工作。

getfeed.js:

    var newsfeeds;

    $('#feedListPage').bind('pageinit', function(event) {
        getFeedList();
    });

    function getFeedList() {
        $.getJSON(serviceURL + 'getfeeds.php', function(data) {
            $('#feedList li').remove();
            newsfeeds = data.items;
            $.each(newsfeeds, function(index, newsfeed) {
                $('#feedList').append('<li><a href="feeddetails.html?id=' + newsfeed.id + '">' +
                '<img src="' + newsfeed.img + '"/>' +
                '<h4>' + newsfeed.title + '</h4>' +
                '<p>' + newsfeed.desc + '</p>' +
                '</a></li>');
            });
            $('#feedList').listview('refresh');
        });
    }

此代码单独工作正常,但当从另一个页面调用它时,它不会刷新列表。

最佳答案

这是一个疯狂的猜测,但我想我知道你的情况出了什么问题。

要了解这种情况,您需要了解 jQuery Mobile 的工作原理。它使用ajax来加载其他页面。

第一页正常加载。它的 HEAD 和 BODY 被加载到 DOM 中,它们在那里等待其他内容。加载第二个页面时,仅将其 BODY 内容加载到 DOM 中。因此,当您直接打开页面并且您的 javascript 放置在 HEAD 中时,javascript 将成功执行,但如果您打开其他 html 文件并且其 javascript 位于 head 中,则它将被丢弃,因为只会加载 BODY。

如果您想了解有关此问题的更多信息以及如何解决它(+可行的解决方案),请查看我的其他答案: Why I have to put all the script to index.html in jquery mobile

关于重定向后 jQuery Mobile ListView 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16609850/

相关文章:

javascript - C# Web 方法未在 javascript 中调用

javascript - 日期选择器仅适用于第一行

html - 顶部图像,重复背景和底部图像...HTML 和 CSS

javascript - 如何从 <function scope >'s Closure in Chrome Developer tool' s Watch 面板访问值?

HTML/CSS 下拉菜单

javascript - 我如何在移动设备上显式触发 jQuery .click() 或 .tap() 事件

javascript - 具有多个动画的 jQuery 切换

c# - 自动验证文本框设置破折号(-)

jquery - 双击后退按钮会导致网站后退两页

android - 使用 PhoneGap 访问网站