javascript - 为自动分频器设置自定义属性

标签 javascript jquery html cordova jquery-mobile

我正在尝试划分一个在 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');

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

最佳答案

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

接下来,对于状态,您可以在 LI 上使用数据属性或在 li 中使用 anchor :

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

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

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

Working DEMO

关于javascript - 为自动分频器设置自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442234/

相关文章:

javascript - jquery 移动可折叠小部件样式不起作用

html - 当标签太长时,Bootstrap 单选按钮和标签在不同的行中

jquery - Jssor:当页面太长时添加垂直滚动条

javascript - Jquery 单击检查最近的复选框

javascript - 无法在 JavaScript 中创建 Vue Router 实例

javascript - 基于数组按 ids 组织列表 - jQuery/JS

jquery - 我如何使用 jquery 选择特定的 anchor 标记?

javascript - 数组元素不会显示在 JavaScript 的选择框中

javascript - 为什么在第一个 if 语句为 true 后,我的第二个 if 语句连续运行两次?

javascript - 如何在nodejs中获取以字节为单位的字符串长度?