【问题标题】:Set custom attribute for autodividers为自动分隔符设置自定义属性
【发布时间】:2015-04-04 02:58:55
【问题描述】:

我正在尝试划分一个在 jQuery-mobile 中动态填充的 ListView。我正在设置一些带有属性status="true" 和一些status="false" 的列表项,想知道是否可以自动将它们分成两组(已下载/未下载)?

这是我的 HTML:

<div role="main" class="ui-content jqm-content">
    <div>
        <ul id="linkList" data-role="listview" data-autodividers="true">
        </ul>
    </div>
</div>

我的 JS:

var $li;
var $status = 'false';

window.resolveLocalFileSystemURL(fileSource + val.title + ".pdf", success, fail);

// if file exists
function success() {
    $li.find("a").on("click", function(){ openPdf(val.title); });
    $status = 'true';
}

// if file doesnt exists
function fail() {
    $li.find("a").on("click", function(){ downloadPdf(val.title,val.url); });
    $status = 'false';
}

$li = $("<li><a href='#' status=''+status+''>"+val.title+"</a></li>");

$("#linkList").append($li).listview('refresh');
$("#linkList").listview({
    autodividers: true,
    autodividersSelector: function (li) {
    var out = li.attr('status');
    return out;
    }
}).listview('refresh');

那么,是否可以自动执行此操作,或者我必须按代码进行排序,并添加分隔符。代码本身并没有添加任何分隔符。

【问题讨论】:

  • 你的代码有什么问题?
  • @AtanuCSE 没有显示分隔符。

标签: javascript jquery html cordova jquery-mobile


【解决方案1】:

首先,自动分隔符仅在您的列表已按状态排序时才有效。因此,您需要在将其添加到 UL 之前对其进行排序。

接下来,对于状态,您可以使用 LI 上的数据属性或 li 内的锚点:

'<li ><a href="#" data-status="' + item.status +'">' + item.val + '</a></li>'

然后在添加项目时,设置 autodividersSelector 以检索锚点上的数据属性:

$('#linkList')
    .empty()
    .append(allfiles)
    .listview({
        autodividers:true,
        autodividersSelector: function ( li ) {
            var out = li.find('a').data("status");
            return out;
        }
    })
    .listview("refresh");

工作DEMO

【讨论】:

  • 所以,如果我理解正确的话。如果下载的和未下载的按分组顺序保存,这将不起作用?
  • @janlindso,如果你不排序,你最终会得到多个组,而不仅仅是 2 个:jsfiddle.net/ezanker/0kxb8z38/1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2012-12-17
  • 1970-01-01
  • 2011-05-06
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多