2011-10-26 73 views
2

我有這樣jQuery Mobile的,正確的方法做導航Ajax和.live()或.bind()

 <div id="top" data-role="navbar" data-type="horizontal"> 
      <ul> 
      <li><a href="#a">A</a></li> 
      <li><a href="#b">B</a></li> 
      <li><a href="#c">C</a></li> 
      <li><a href="#d">D</a></li> 
      </ul> 
     </div> 

導航欄和我有例如

一個<div id="content">然後我加上我的JavaScript

<script language="javascript"> 
$('div[id="top"] ul li a').live("click", function(e) { 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 
    var html = //SOME HTML 
    var content = $('div[id="content"]'); 
    $(content).html(html); 
}); 
</script> 

但是,它只能即改變DIV內容到我的HTML,如果我點擊兩次按鈕,如果我點擊一個只給我的默認頁。任何想法如何糾正它?

我在這裏營造出搗鼓你測試 http://jsfiddle.net/3Rcem/

我找到使用。點擊(解決方案),而不是.live(「點擊」),但這個我不能綁定到「V單擊」這是由JQuery的移動建議,任何人都可以幫助我使用現場?

回答

1

我不知道爲什麼,但是當我將.live("click",更改爲.click(時,它工作正常。

順便說一句:$('div[id="content"]')是不對的。你應該做$('div#content'),可能只是$('#content')

此外:<script language="javascript">是不正確的,它應該是:<script type="text/javascript">

+0

它不適合我......你能提供一個小提琴嗎? – w00d

+0

@iKid http://jsfiddle.net/3Rcem/10/ – Ariel

+0

我的錯誤......它真的有用!謝謝!...任何想法爲什麼? – w00d

0

這對我有用。我所做的只是更改href來刪除額外的導航部分。 (例如從#A到#)。

 <header data-role="header" class="ui-bar"> 
      <h1> HEADER </h1> 
      <a href="index.html" data-icon="gear" class="ui-btn-right">Options</a> 
      <div id="top" data-role="navbar" data-type="horizontal"> 
       <ul> 
        <li><a href="#">A</a></li>    
        <li><a href="#">B</a></li> 
        <li><a href="#">C</a></li> 
        <li><a href="#">D</a></li> 
       </ul> 
      </div> 
     </header> 

     <div data-role="content" id="middle"> 
      <strong>Content</strong> Is <i>Here</i> 
     </div> 

     <footer data-role="footer" data-position="fixed"> 
      <h1> Copyright (C) by me </h1> 
     </footer> 
    </div> 
    <script language="javascript"> 
     $('div[id="top"] ul li a').live("click", function(e) { 
     e.stopImmediatePropagation(); 
     e.preventDefault(); 
     var html = $(this).html(); 
     var content = $('div[id="middle"]'); 
     $(content).html(html); 
     }); 
    </script> 
</body> 

+0

是的..它也適用於我的這種方式,但我想通過使用#作爲指標來引用頁面...我不知道爲什麼jquery mobile會這樣做,計劃很快切換到其他移動框架 – w00d

1

試試這一個。我現在將標題顯示爲數據,但您可以更改行爲以符合您的需求。希望這可以幫助!

... 
    <script language="javascript" type="text/javascript"> 
     $(document).ready(function() { 
      $('#top').find('a').click(function(e) { 
       var html = "<p>" + $(this).text() + "</p>"; 
       var content = $('#middle'); 
       content.html(html); 
       return false; 
      });   
     }); 
    </script> 
</head> 
+0

也許你試圖將它複製到一個html文件,看看,它不起作用 – w00d

+0

是的,謝謝...問題是與'活',因爲你和@Ariel給出了相同的答案,我會給正確誰可以解釋爲什麼它的工作原理... – w00d

+0

現在就試試吧,我在那裏添加了腳本塊到部分,還有文檔準備好的事件 – Tx3