2013-06-19 2 views
1

Я использую jQuery mobile с Phonegap.
Я создал «главную страницу» index.html, загружающий файл #content anther html.
Также у меня есть скользящее меню, которое я хочу использовать для навигации.Закрыть меню и загрузить страницу

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Computer World</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css"/> 
    <!--link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css" /--> 
    <link rel="stylesheet" href="css/styles.css"/> 
    <!--script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script--> 
    <!--script type="text/javascript" src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script--> 
    <script type="text/javascript" src="script/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="script/jquery.mobile-1.3.1.min.js"></script> 
    <script type="text/javascript"> 

    function loadPage(page){ 
     $('#content').load(page); 
    } 

    $(document).on('pageinit', function(){ 
     console.log("pageinit"); 
     loadPage('main.html'); 
    }); 

</script> 

</head> 
<body> 
<div data-role="page" id="home" data-theme="b"> 

    <div id="header" data-role="header" data-theme="b"> 
     <a id="bars-button" data-icon="bars" class="ui-btn-right" style="margin-top:10px;" href="#navpanel">Menu</a> 
    </div> 

    <div id="content" data-role="content"> 

    </div> 

    <div data-role="panel" id="navpanel" data-theme="a" data-display="push" data-position="right"> 
     <div data-role="controlgroup" data-corners="false"> 
      <a href="Main.html" data-role="button">Main</a> 
      <a href="#navpanel" onclick="loadPage('business.html')" rel="external">Business</a> 
      <a href="numbers.html" data-role="button">Numbers</a> 
      <a href="money.html" data-role="button">Money</a> 
      <a href="people.html" data-role="button">People</a> 
     </div> 
    </div> 
</div> 
</body> 
</html> 

Когда я использую <a href="Main.html" data-role="button">Main</a> он идет на другую страницу
, но когда я использую <a href="#navpanel" onclick="loadPage('business.html')" rel="external">Business</a> я получил следующий Exeption:

Uncaught TypeError: Cannot read property 'options' of undefined 
a 
e.widget._create 
(anonymous function) 
e.Widget._createWidget 
e.widget._createWidget 
(anonymous function) 
e.(anonymous function).(anonymous function) 
(anonymous function) 
b.extend.each 
b.fn.b.each 
e.fn.(anonymous function) 
e.widget.enhance 
(anonymous function) 
e.widget.enhanceWithin 
(anonymous function) 
(anonymous function) 
b.event.dispatch 
v.handle 
b.event.trigger 
(anonymous function) 
b.extend.each 
b.fn.b.each 
b.fn.extend.trigger 
e.Widget._trigger 
e.Widget._createWidget 
e.widget._createWidget 
(anonymous function) 
e.(anonymous function).(anonymous function) 
(anonymous function) 
b.extend.each 
b.fn.b.each 
e.fn.(anonymous function) 
r 
e.mobile.changePage 
e.mobile.gradeA.e.extend.initializePage 
(anonymous function) 
c 
p.fireWith 
b.extend.ready 

То, что я пытаюсь сделать, это загрузить внешнее содержимое файла в #content и закрыть меню. Что я делаю неправильно?

+0

Почему вы используете 'data-rel = external' здесь, если хотите только загрузить файл на одну страницу? если вы хотите загрузить файл в содержимое '$ (document) .on ('click', '#id', function() {$ ('[data-role = content]'). load ('file.HTML '); }); ' – Omar

+0

Но этот Business также выбрасывает это исключение, и мне нужно закрыть меню – NickF

+0

' loadpage' означает перейти на другую страницу? или загружать содержимое страницы? – Omar

ответ

3

Это никогда не будет работать, потому что оба действия будут убивать друг друга. С одной стороны вы пытаетесь загрузить панель себя:

<a href="#navpanel"...... 

href не может указывать на себя, как это и должно быть удалено.

Вторая вещь это onClick событие:

onclick="loadPage('business.html')" 

просто не может быть использован, как это. loadPage как классическая функция загрузки jQuery - это асинхронный метод. В основном страница смены не может произойти до полной загрузки страницы. Вот почему здесь нужно использовать функцию обратного вызова.

Не говоря уже о двух разных процедурах загрузки. В какой-то момент loadPage используется для загрузки другой страницы в DOM через AJAX, а с другой стороны rel="external" говорит jQuery Mobile, чтобы обновить все и открыть другую страницу.

Просто используйте обычный способ загрузки страницы:

<a href="business.html">Business</a> 

или как это:

<div data-role="panel" id="navpanel" data-theme="a" data-display="push" data-position="right"> 
    <div data-role="controlgroup" data-corners="false"> 
     <a href="Main.html" data-role="button">Main</a> 
     <a href="business.html">Business</a> 
     <a href="numbers.html" data-role="button">Numbers</a> 
     <a href="money.html" data-role="button">Money</a> 
     <a href="people.html" data-role="button">People</a> 
    </div> 
</div> 

Или есть другой вариант. Другая страница HTML может быть предварительно запрограммирована. Его можно найти в официальной документации HERE.

Если вы делаете это так:

<a href="business.html" data-prefetch>Business</a> 

Это удостоверится buiness.html загружается, как только страница #home активен.

+0

Но в этом случае мне нужно создать тот же шаблон для всех страниц? – NickF

+0

Зачем вам это делать? Просто откройте страницу, отправьте ей какой-то параметр и динамически создайте новый контент. Окончательное решение такое же. Если вы хотите узнать, как вы можете отправлять данные между страницами, посмотрите статью моего блога: http://www.gajotres.net/document-onpageinit-vs-document-ready/ ищите главу: манипуляция данными/параметрами между переадресациями страниц – Gajotres

+0

Очень хорошие примеры, но я до сих пор не понимаю, можно ли использовать несколько html-файлов, я могу создать скользящее меню только один раз? Мне нужно, чтобы на всех страницах было одно и то же скользящее меню. – NickF

Смежные вопросы