【问题标题】:how to call a function to auto load elements in jquery mobile site如何调用函数来自动加载jQuery移动网站中的元素
【发布时间】:2013-07-01 20:45:00
【问题描述】:

我想要做的是将我的导航栏 HTML 标记放在一个位置(以便于编辑)。 现在我的 index.html 正文内容如下所示:

<div data-role="page" id="SomePage">
    <div data-role="header">
        <h1>This is Page 1</h1>
    </div>
    <div data-role="navbar"></div>
</div>

并在标题中这样调用我的文件:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" language="javascript" src="app.js"></script>

在我的 app.js 文件中,我尝试加载导航栏。我已经尝试了两种方法

第一个:

var NavBar = function() {
$('div[data-role="navbar"]').html('<ul>' +
    '<li><a href="#SomePage" data-transition="fade" data-icon="none">By Brand</a></li>' +
    '<li><a href="#AnotherPage" data-transition="fade" data-icon="none">By Flavor</a></li>' +
    '<li><a href="#LastPage" data-transition="fade" data-icon="none">Zero Nicotine</a></li>' +
    '</ul>');
}

$(document).ready(function() {
    NavBar();
}); 

这会导致页面让应用程序显示我的链接,但它们就像没有列表样式的普通 ul 一样堆叠

我尝试的第二种方法是:

var NavBar = function() {
$('div:jqmData[role="navbar"]').html('<ul>' +
    '<li><a href="#SomePage" data-transition="fade" data-icon="none">By Brand</a></li>' +
    '<li><a href="#AnotherPage" data-transition="fade" data-icon="none">By Flavor</a></li>' +
    '<li><a href="#LastPage" data-transition="fade" data-icon="none">Zero Nicotine</a></li>' +
    '</ul>');
}

$(document).ready(function() {
    NavBar();
});

这导致根本看不到链接。

如何创建一个函数来在一个地方加载“导航栏”并使用 jQuery Mobile 样式?

【问题讨论】:

  • 答案是 `$('[data-role="page"]').live('pagebeforecreate', function()` 而不是这里概述的$(document).ready:[link]@ 987654321@,对不起,我已登录到磨损的帐户,它不会让我再过 7 小时回答我自己的问题
  • 基本上是我写给你的:)

标签: javascript jquery html css jquery-mobile


【解决方案1】:

document ready 不应与 jQuery Mobile 一起使用,它通常会在页面加载到 DOM 之前触发.要了解有关此主题的更多信息,请查看此 ARTICLE 或查找 HERE

您应该使用正确的 jQuery Mobile 页面事件。

我让你成为一个工作的 jsFiddle example

$(document).on('pagebeforecreate', '#index', function(){       
    $('[data-role="navbar"]').html('<ul>' +
        '<li><a href="#SomePage" data-transition="fade" data-icon="none">By Brand</a></li>' +
        '<li><a href="#AnotherPage" data-transition="fade" data-icon="none">By Flavor</a></li>' +
        '<li><a href="#LastPage" data-transition="fade" data-icon="none">Zero Nicotine</a></li>' +
        '</ul>');
});

【讨论】:

  • 谢谢我明白了,正如你在我的评论中看到的那样。刚刚尝试了您的方法,该方法与我的相似并且也有效
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2013-02-08
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多