好的,一旦我看到答案,我会感到愚蠢。我很确定。
我之前已经按照我想要的方式创建了这个,但我现在正在重构我的代码以获得新版本。我试图在jQuery Mobile中动态创建可折叠集,但我的html无法正确呈现。
<div data-role="header">
<h2>Playground</h2>
</div>
<div data-role="content">
<div data-role="button" id="addprimary" data-inline="true">Add 5</div>
<div data-role="collapsible">
<h4>Collapsible</h4>
<form id="makecollapsible">
</form>
</div>
</div>
<div data-role="footer">
<h4>Please, no applause</h4>
</div>
</div>
<script>
$('#addprimary').on('click', function () {
Markup.Collapsible();
});
var Markup = new Object();
Markup.Collapsible = function () {
$('#makecollapsible')
.append($('<div>')
.attr({ 'data-role': 'collapsible-set', 'id': 'primary' })
);
for (i = 0; i < 5; i++) {
($('<div>')
.attr({ 'data-role': 'collapsible', 'data-content-theme': 'c',
'data-collapsed': 'true' })
.html('<h4>' + i +'</h4>'))
.appendTo('#primary');
}
}
</script>
有人可以看看这个http://jsfiddle.net/c2jLY/并告诉我我的错误吗?我<div>
data-role='collapsible'
的{{1}}不会呈现为可折叠的,这也会影响我之后尝试放入的HTML。
感谢帮助,谢谢!
答案 0 :(得分:5)
在Markup.Collapsible
内部功能,在其末尾添加以下内容。对于可折叠集,您需要告诉jQM您正在增强.collapsibleset()
并将其与.trigger('create')
结合使用。
$('#makecollapsible').collapsibleset().trigger('create');
我忘了提到动态追加项目时,在父元素上调用增强方法;这样做,会增强孩子们的元素。因此,您不需要为每个可附加的可折叠使用.collapsible().trigger('create')
。
答案 1 :(得分:0)
我在这里展示的是一个简单的但正在工作:
<script type="text/javascript">
//dynamically make 10 collapsible items and append them to the collapsible-set
var jj = "SUPER item added..";
$('[data-role="content"]').append('<div id="set" data-role="collapsible-set"></div>');
var count;
for (count=0; count < 10; count++) { // div id should be from id='c0' to 'c9'
$("#set").append('<div id="c' + count + '" data-role="collapsible">');
$("#c" + count.toString()).append('<h3>Adding element_' + count +'</h3>');
$("#c" + count.toString()).append(jj + 'count ' + count + '</div>');
}
// either one is tested working below:
// $('[data-role="content"]').trigger('create');
$( "#set" ).collapsibleset( "refresh" );
</script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<link href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<!------------------------page 1 ListView template-->
<div data-role="page" id="page01">
<div data-role="header" data-theme="b" data-position="fixed">
<h2>-- DEMO -- </h2>
</div>
<div data-role="content" id="content">
</div>
</body>