3

我是第一次使用 jQuery Mobile,但在完成对可折叠集 (accordion)上的图标进行简单更改时遇到了麻烦。

我想将可折叠集上每个标题的图标更改为展开状态的向上箭头和折叠状态的向下箭头。

我创建了一个 Fiddle,它的代码似乎与我几乎直接从 jQuery 移动网站复制并稍作修改的代码有相同的问题。

对此的任何帮助或指示将不胜感激。谢谢!

4

4 回答 4

6

您引用的文档页面实际上使用了最新的Work in Progress版本的jquery mobile。所以这是我们可以在未来版本的JQM中期待的功能。在当前的稳定版本中,我们将无法通过指定的方式更改图标一个数据属性。

这是一个例子:它使用了 jqm 的 Work in Progress 版本 - 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>

逻辑是使用图标精灵中向下和向上图标的背景位置用于折叠和展开的图标

演示:http: //jsfiddle.net/6x8ew/

于 2012-05-18T07:33:53.143 回答
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 的可折叠事件来切换到相应的图标。

请参阅我的工作示例

于 2012-05-17T23:41:23.470 回答
0

使用 jquery mobile version 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;

}

于 2014-02-03T08:49:55.860 回答
0

我还没有对 jQuery Mobile 做太多事情,所以请尽情享受它的价值。

我认为您需要将属性放在 上<div data-role="collapsible-set">,而不是每个上data-role="collapsible"。显然,这只适用于所有孩子,它不会让你针对个别孩子。

于 2012-05-17T17:21:07.510 回答