2011-09-28 61 views
1

我工作的一个部分演示应用程序来学习jQuery Mobile的事情。我已经尝试了很多的选择,但没能获得几件事情的解决方案: -如何在Jquery Mobile的两页之间传递和获取参数?

  1. http://jsfiddle.net/sahil20grover1988/zZMXQ/48/在这种情况下,当我在索引页它没有引导到添加PARAM地址搜索页面
  2. 在情况下,如果我不添加PARAMS到索引页然后我如何通过PARAMS指数页面搜索页面
  3. 另外我需要帮助如何检索参数搜索页面 ??

回答

7

这是否帮助?

JS

$('#page2').live('pageshow', function(event, ui) { 
    alert('Page 2 - CID: ' + getParameterByName('cid')); 
}); 

function getParameterByName(name) { 
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); 
    return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

HTML

<div data-role="page" id="home"> 
    <div data-role="content"> 
     <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f"> 
      <li data-role="list-divider"> 
       Home Page 
      </li> 
      <li> 
       <a href="?cid=1234#page2" rel="external">Page 2</a> 
      </li> 
     </ul>     
    </div> 
</div> 
<!-- page 2 --> 
<div data-role="page" id="page2"> 
    <div data-role="content"> 
     <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f"> 
      <li data-role="list-divider"> 
       Page 2 
      </li> 
      <li> 
       <a href="?cid=4321#home">Home Page</a> 
      </li> 
     </ul> 
    </div> 
</div> 
+0

很好地解释说感谢,但为什么thiis不工作? http://jsfiddle.net/sahil20grover1988/VXV3R/9/ –

6

我想出了这个简单的方法...

首先添加丘斯托m HTML5属性到页面1上的元素以保存要传递的数据。我的属性被命名为data-parm

<div data-role="page" id="one"> 
    <div data-role="content"> 
     <ul data-role="listview" data-theme="c"> 
     <li><a data-parm="john" href="#two">one</a></li> 
     <li><a data-parm="mary" href="#two">two</a></li> 
     <li><a data-parm="sue" href="#two">three</a></li> 
     </ul> 
    </div> 
</div> 

<div data-role="page" id="two"> 
    <div data-role="content"> 
     <div id="showParmHere"></div> 
    </div> 
</div> 

在JavaScript中,创建选择属性,并将值的变量,这将是为您提供页面2.

上单击处理程序(或其他类型的处理程序)

在这个例子中,我已经把它添加到一个div的HTML这是第2页

$("a").on("click", function (event) { 

    var parm = $(this).attr("data-parm"); 
    //do something here with parameter on page 2 (or any page in the dom) 
    $("#showParmHere").html(parm); 

}); 
+0

简单和基本的使用JQUERY。尼斯! –

+2

@Joel:使用'var parm = $('this')。data('parm');'而不是'.attr'。这种方式是安全的循环引用,因此从内存泄漏 –

+0

@Tom:非常感谢提示。令人困惑的是,这似乎并不合意。比如这篇文章说的完全相反。 http://lookfirst.com/2011/12/dont-use-jquery-data-method-use-attr.html。哪个是对的? –

0

对我无意中发现了这个问题,因为同样的问题,但认为我找到了一个更简单的方法。至少如果你使用“pagebeforechange”事件。这就是我迄今为止尝试解决方案的地方。 “.options.link.context.search”:

您可以通过此对象路径得到的pageonchange事件函数的第二个参数的搜索字符串。我希望示例代码足以解释它。

$(document).live("pagebeforechange", function(e, secondparameter) { 
    alert(secondparameter.options.link.context.search); 
}); 
0

我为jQM 1.4+创建了一个解决方案,它允许参数通过URL传递。这个工程相当不错,如果你希望用户能够直接进入到一个页面的参数(比如从电子邮件),或者如果用户刷新页面。

这是在MIT许可下,你可以找到它here on GitHub

相关问题