【问题标题】:jQuery Mobile: Uncaught TypeError: Cannot read property 'jQuery...' of undefinedjQuery Mobile:未捕获的 TypeError:无法读取未定义的属性“jQuery ...”
【发布时间】:2013-09-25 22:35:52
【问题描述】:

我有一个 jQuery Mobile 项目,它分布在不同的文件中,例如

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />

        <link rel="stylesheet" href="css/custom.css" />

        <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
        <script src="js/methods.js"></script>
    </head>
    <body>
        <!-- Termine Page -->
        <div data-role="page" id="firstPage">
            <div data-role="header" data-position="fixed">
                <h1>Header 1</h1>
                ...
            </div><!-- /navbar -->

            <div data-role="content">
            ...
            </div>
        </div>
    </body>
</html>

secondPage.html

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />

        <link rel="stylesheet" href="css/custom.css" />

        <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
        <script src="js/methods.js"></script>
    </head>
    <body>
        <div data-role="page" id="pageTwo" class="ui-page">
            <div data-role="header" data-position="fixed" id="terminDetailSeiteHeader">
            <h1>Header 2</h1>
        </div>
        <div data-role="content">
                <div id="contentToFillWithDynamicListView"></div>
            </div>
        </div>
    </body>
</html> 

然后,我得到了一个脚本,它应该调用一个 php-Script 并生成一个列表视图:

function listViewCreation() {
    var url = 'http://www.myServer.com/myPhp.php?someParameters=1&callback=?';
        $.getJSON(url, function(data) {
            $('#contentToFillWithDynamicListView').empty();
            var collapsibleList = '<ul data-role="listview">';
            var myselfIsIncluded = 0;
            $.each(data, function(key, value) {
                collapsibleList += '<li>' + value['displayName'] + '</li>';
            });
            collapsibleList += '</ul>';

            $('#contentToFillWithDynamicListView').html(collapsibleList).trigger('create');
        });
    }

.trigger('create') 导致错误...我错过了什么?

编辑 1

listViewCreation 的调用方式如下:

$("#pageTwo").live("pageshow", function(e, data){
    listViewCreation();
});

编辑 2 我正在从另一台服务器获取远程数据,这似乎是错误的原因;但我不知道如何解决它......我在两个页面(1和2)上获取数据;对于第一页它可以工作,对于第二个它不...

$.getJSON(url, function(data) {
    ...
}

【问题讨论】:

  • listViewCreation()方法在什么文件里?
  • 您的代码似乎没问题,您可以在此处看到(稍作修改):jsfiddle.net/rhHUy
  • 确切的错误是什么(我的意思是在“jQuery”之后)?
  • 未捕获的类型错误:无法读取未定义的属性 'jQuery18304456543792039156'
  • 我已经尝试了整个代码。它运行良好,因此问题可能出在您的服务器数据上。只是尝试,删除 phonegap 库,而不是服务器中的数据,尝试一些本地数据。如果它有效,你会有一些线索

标签: jquery-mobile


【解决方案1】:

我可以看到您正在使用 jQuery mobile 的最新稳定版本。

你的问题是

trigger('create');

它不用于 jQuery 移动列表视图重新设置样式。你应该使用:

.listview('refresh');

相反。不要相信官方的 jQM 文档,trigger('create') 应该被弃用。每个 jQM 小部件都有一个用于刷新它的函数,例如 button('refresh')

同样不要使用trigger('create')来改变页眉、页脚或内容,它不起作用,可以在页面上触发pagecreate:

trigger('pagecreate');

编辑:

如果:

未捕获的错误:无法在 listview 之前调用方法 初始化;试图调用方法“刷新”

呼叫:

$('#listviewid').listview().listview('refresh');

第一次调用会初始化它,第二次调用会设置样式。

ARTICLE 中了解有关此主题的更多信息。

【讨论】:

  • 我说对了吗?我必须让 listview 获得一个 id (
      ),然后是 $('#listviewid').listview('refresh'); - 正确的?因为那时我收到“未捕获的错误:无法在初始化之前调用 listview 上的方法;试图调用方法‘刷新’”
  • 好的,在这种情况下你需要先初始化它,像这样: $('#listviewid').listview().listview('refresh');第一个 listview() 将初始化它,第二个将设置它的样式。
  • 不幸的是它也不起作用;再次执行 listview() 时未捕获的类型错误... :(
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2014-06-02
相关资源
最近更新 更多