我第一次使用jQuery Mobile,我无法完成collapsible set (accordion)上图标的简单更改。
我想将可折叠集上每个标题的图标更改为展开状态的向上箭头和折叠状态的向下箭头。
我创建a Fiddle似乎与代码存在同样的问题,我几乎直接从jQuery移动网站复制并修改了一些。
对此的任何帮助或指示将非常感激。谢谢!
答案 0 :(得分:6)
您提到的文档页面实际上使用了jquery mobile的最新Work in Progress版本。所以这是我们在未来版本的JQM中可以预期的功能。在当前的稳定版本中,我们将无法通过以下方式更改图标指定数据属性的方法。
这是一个例如:它使用jqm的工作进展版本 - http://jsfiddle.net/AAYjF/
但建议使用稳定版本。所以你可以使用下面的代码来实现这个目的:
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<style>
.ui-collapsible .ui-icon{
background-position: -180px 50%;/*Position of up icon in icon sprite*/
}
.ui-collapsible-collapsed .ui-icon{
background-position: -216px 50%;/*Position of down icon in icon sprite*/
}
</style>
</head>
<body>
<div data-role="page">
<div data-role="header">
<h1>My Title</h1>
</div><!-- /header -->
<div data-role="content">
<div data-role="collapsible-set">
<div data-role="collapsible">
<h3>Section 1</h3>
<p>I'm the collapsible set content for section B.</p>
</div>
<div data-role="collapsible" >
<h3>Section 2</h3>
<p>I'm the collapsible set content for section B.</p>
</div>
</div>
</div><!-- /content -->
</div><!-- /page -->
</body>
</html>
逻辑是使用图标精灵中向下和向上图标的背景位置来显示折叠和展开的图标
答案 1 :(得分:5)
我相信你可以改进这个解决方案,但这里有一个基本的想法,就是在不侵入JQM源的情况下实现这一目标。
$(document).on('pageinit',function(){
$('.ui-collapsible .ui-icon').removeClass('ui-icon-plus').addClass('ui-icon-arrow-u');
$('[data-role=collapsible]')
.on('expand',function(){
$(this).find('.ui-icon').removeClass('ui-icon-arrow-u').addClass('ui-icon-arrow-d');
})
.on('collapse',function(){
$(this).find('.ui-icon').removeClass('ui-icon-arrow-d').addClass('ui-icon-arrow-u');
});
});
我正在使用jqm的可折叠事件切换到相应的图标。
查看我的working example。
答案 2 :(得分:0)
我还没有完成jQuery Mobile的工作,所以请把它当作它的价值。
我认为您需要将属性放在<div data-role="collapsible-set">
上,而不是放在每个data-role="collapsible"
上。显然,这只适用于所有孩子,并且不会让你针对个别孩子。
答案 3 :(得分:0)
使用jquery mobile 1.4.0版,您可以通过在CSS文件中包含以下代码来实现此目的
自定义右箭头
.ui-icon-arrow-r:after {
background: url("Path to your image file") no-repeat scroll 0px 0px transparent;
}
自定义向下箭头
.ui-icon-arrow-d:after {
background: url("Path to your image file") no-repeat scroll 0px 0px transparent;
}