动态添加可折叠集和嵌套列表在jQuery移动
Dynamically adding collapsible set and nested list in jQuery mobile
我动态地在collapsible
中添加listview
。在这个列表中,我试图添加一个嵌套列表。当我点击<li>
节点时,pageinit
事件被触发而不是click
事件。当我们第二次点击同一个li
时,点击事件被触发。
jsFiddle—— http://jsfiddle.net/5zJC5/
HTML:<body>
<div data-role="page">
<div data-role="collapsible-set" data-theme="b" data-content-theme="d" id="mainColl"></div>
</div>
</body>
jQuery: $(document).ready(function () {
var ul=$("#mainColl");
var collapsible= $('<div data-role="collapsible">');
collapsible.append('<h2>Collapsible</h2>');
var list = $('<ul data-role="listview" data-divider-theme="b">');
list.append('<li data-role="list-divider">List</li>');
for(var j =0;j<4;j++) {
list.append("<li>Item</li>");
}
collapsible.append(list);
ul.append(collapsible);
ul.trigger('create');
});
$("#mainColl").on("click","li",function() {
var list = $("<ul>");
for(var i=0;i<4;i++) {
list.append("<li>test</li>");
}
$(this).append(list);
//$(this).trigger('create');
$(this).parent().listview('refresh');
});
您必须使用list.append("<li><a href='"#'">Item</a></li>");
而不是list.append("<li>Item</li>");
。
此处更新了jSFiddle。
另外,注意不建议将文档准备处理程序与jQuery Mobile结合使用。我建议在jQM页面上添加一个id,并使用"pagebeforeshow"事件的事件处理程序。
$(document).on('pagebeforeshow', '#page-id', function(){...mycode...});
您可以在这里找到包含建议修复的jsFiddle
最后,我想建议您避免创建这样的动态部件。您将意识到,一段时间后,您的代码将变得混乱和难以阅读。
我的建议是使用uncore .js作为模板引擎,使你的代码可重用和干净。
编辑为嵌套列表项添加处理程序:
<!DOCTYPE html>
<html>
<head>
<title>jQuery Mobile Nested List</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" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<script>
$(document).on('pagebeforeshow', '#home-page', function ()
{
var collapsibleSet=$("#mainColl");
var collapsible= $('<div data-role="collapsible"></div>');
collapsible.append('<h2>Collapsible</h2>');
var list = $('<ul data-role="listview" data-divider-theme="b"></ul>');
list.append('<li data-role="list-divider">List</li>');
for(var j =0;j<4;j++)
{
list.append("<li><a href='"#'">Item</a></li>");
}
collapsible.append(list);
collapsibleSet.append(collapsible);
collapsibleSet.trigger('create');
});
$(document).on("click","#mainColl li",function()
{
var list = $("<ul id='"second-list'"></ul>");
for(var i=0; i<4; i++)
{
var listItem = $("<li id='"list-" + i + "'"><a href='"#'">Test</a></li>").on('click', function(){alert(this.id)})
list.append(listItem);
}
$(this).append(list);
$(this).parent().listview('refresh');
});
</script>
</head>
<body>
<div data-role="page" id="home-page">
<div data-role="content">
<div data-role="collapsible-set" data-theme="b" data-content-theme="d" id="mainColl">
</div>
</div>
</div>
</body>
</html>
相关文章:
- 从项目列表Jquery中仅选择(显示:块)元素
- 如何处理多选下拉列表 - JQuery.
- 如果未选择第一项,请选择下拉列表 jQuery
- 要执行列表jquery,请划掉项目
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- 如何在下拉列表JQuery中添加reclick
- 正在执行函数列表jquery
- 引用SELECT列表jQuery
- 限制要在嵌套列表jQuery中添加的列表元素的数量
- 无序列表 jQuery 在固定位置显示列表中的选定项
- 从列表 JQUERY 中获取单击输入的正确名称
- 如何将项目添加到选定的追加列表 jQuery
- 如何选择特定的状态列表 Jquery.
- 单个列筛选不保存下拉列表 jQuery 的状态
- 谷歌日历事件列表jQuery格式
- 设置输入值后将列表拆分为多个小列表 - Jquery
- 尝试输出唯一数据属性列表(jQuery/Java)
- 如何在窗口宽度处删除类列表 - jquery/javascript
- 默认文本下拉列表jquery
- 从列表jquery中获取最接近的值