Dynamic 向jQuery Mobile动态添加链接
我读了很多关于如何在jquery mobile中动态添加内容的书,但我不知道如何添加链接 目前,我的解决方案如下所示:Dynamic 向jQuery Mobile动态添加链接,dynamic,hyperlink,jquery-mobile,Dynamic,Hyperlink,Jquery Mobile,我读了很多关于如何在jquery mobile中动态添加内容的书,但我不知道如何添加链接 目前,我的解决方案如下所示: 添加一个新页面-id为(id=“list-1”) 为其创建链接(href=“#列表-1”) 这个解决方案在静态页面中工作得很好,但我想动态地完成它。我用page()和类似的东西尝试了很多,但没有任何帮助 我的问题是: 如何添加动态链接和页面 我是否选择了正确的方式使用ID和锚(#list-1)作为链接,或者jquery mobile是否有其他解决方案 如果您需要更多信息来添加动
page()
和类似的东西尝试了很多,但没有任何帮助
我的问题是:
如果您需要更多信息来添加动态链接,请告诉我,我发现最简单的方法就是让事件侦听器等待单击这些链接。然后,此事件侦听器保存要传递到正在访问的下一页的任何参数。只需在每个“li”元素中指定参数,即可将参数从列表元素传递给事件侦听器 那么您的事件侦听器将类似于:
$('#my-page').delegate('li', 'click', function() {
passedParameter = $(this).get(0).getAttribute('passed-parameter');
});
当jQuery Mobile加载下一个页面时,您可能希望动态加载此页面,并且可以使用此passedParameter变量。要动态加载页面,只需添加一个等待JQM尝试加载页面的侦听器:
$('[data-role=page]').live('pageshow',function(e, ui){
page_name = e.target.id;
if (page_name == 'my-page-2'){
(do something with passedParameter)
}
});
这是我在jQuery Mobile中使用的工作流,它一直工作得很好。不过,我猜测在未来的版本中,它们将内置某种对向页面传递动态参数的支持 对DOM的任何新增强都应该在页面初始化之前完成。但默认情况下,一旦页面加载到浏览器中,JQM会自动初始化页面 因此,首先需要将autoInitializePage属性设置为false,然后在将新页面和链接添加到文档后调用initializePage()方法。希望这有帮助
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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>
$(document).bind("mobileinit", function(){
$.mobile.autoInitializePage = false;
});
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).ready(function() {
//add a link.
$("#page1 div[data-role='content']").append('<a href="#page2">Next Page</a>');
//add a page.
$('body').append(' <div data-role="page" id="page2" data-title="next page"><header data-role="header" class="header"> <h5>Page 2</h5></header><div data-role="content"><h3>Good Morning...</h3><a href="#page1">Back</a></div><footer data-role="footer" data-position="fixed"><h5>© All rights reserved</h5></footer></div>');
});
window.onload = function() {
$.mobile.initializePage();
};
</script>
</head>
<body>
<div data-role="page" id="page1">
<header data-role="header" class="header">
<h5>jQuery Mobile</h5>
</header>
<div data-role="content">
<form method="get" action="" data-transition="slideup">
<label for="email">Email:</label>
<input type="email" name="email" id="email" value=""/>
</form>
</div>
<footer data-role="footer" data-position="fixed"><h5>© All rights reserved</h5></footer>
</div>
</body>
</html>
$(document).bind(“mobileinit”,function(){
$.mobile.autoInitializePage=false;
});
$(文档).ready(函数(){
//添加一个链接。
$(“#第1页div[data role='content']”)。追加(“”);
//添加一个页面。
$('body').append('Page 2Good Morning…©;保留所有权利');
});
window.onload=函数(){
$.mobile.initializePage();
};
jquerymobile
电邮:
&抄袭;版权所有
.page()
仅对一个DOM节点及其子节点工作一次。您必须重新创建一个元素才能再次使用.page()
Hanks@naugtur..您的上述评论节省了我宝贵的时间…非常感谢您的回答,我的回答非常类似,但我的问题是,如果您使用ListView创建链接,jquery mobile无法识别添加页面的新链接(id:),然后添加.listview()和.listview('refresh')将允许JQuery Mobile识别新链接。如果您在不使用listview的情况下创建链接,并且仍然希望传递这些参数,您可以将链接指定为而不是,并在该div上定义侦听器。侦听器可以保存中指定的传递参数,然后调用.changePage('my-page-2')。希望有帮助!是的,我就是这么想的,我必须通过参数使用它,并为.changePage()使用一个自编码函数。没有使用jquery mobile本身链接的选项?没有。。。在alpha3版本中,似乎没有任何内置的方式来动态创建链接到动态生成的页面的链接。关于这一点,互联网上还有很多其他的讨论。如果您找到更好或更优雅的解决方案,请让我知道!
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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>
$(document).bind("mobileinit", function(){
$.mobile.autoInitializePage = false;
});
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).ready(function() {
//add a link.
$("#page1 div[data-role='content']").append('<a href="#page2">Next Page</a>');
//add a page.
$('body').append(' <div data-role="page" id="page2" data-title="next page"><header data-role="header" class="header"> <h5>Page 2</h5></header><div data-role="content"><h3>Good Morning...</h3><a href="#page1">Back</a></div><footer data-role="footer" data-position="fixed"><h5>© All rights reserved</h5></footer></div>');
});
window.onload = function() {
$.mobile.initializePage();
};
</script>
</head>
<body>
<div data-role="page" id="page1">
<header data-role="header" class="header">
<h5>jQuery Mobile</h5>
</header>
<div data-role="content">
<form method="get" action="" data-transition="slideup">
<label for="email">Email:</label>
<input type="email" name="email" id="email" value=""/>
</form>
</div>
<footer data-role="footer" data-position="fixed"><h5>© All rights reserved</h5></footer>
</div>
</body>
</html>