使用jQuery设置HTML5属性值时出现问题

时间:2015-04-05 00:22:24

标签: javascript jquery html5 cordova

我目前正在使用jQuery mobile和Phonegap制作已下载和未下载文件的列表。

一切似乎都运行正常,但我无法将值设置为我的属性data-status

我循环遍历JSON中的文件名列表以检查它们是否存在,这很有效。这是每个文件发生的事情:

var $li;
$li = $("<li><a href='#' data-status='Not downloaded'>"+val.title+"</a></li>");

然后,如果在系统上找到该文件:

$li.find("a").on("click", function(){ openPdf(val.title); }); // a click handler added
$li.find("a").setAttribute('data-status', 'Downloaded'); // This is where something is wrong.

对于每个文件,$ li附加到ListView。然后在整个循环过程之后:

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

那么,为什么属性data-status没有被改为“已下载”的任何想法?

2 个答案:

答案 0 :(得分:2)

您应该使用以下内容:

$li.find("a").data('status', 'Downloaded');

如果您必须使用setAttribute,请使用attr()

$li.find("a").attr('data-status', 'Downloaded');

答案 1 :(得分:2)

$li.find("a")

返回一个名为&#34;包装集的jQuery对象,&#34;这是一个类似于数组的结构,包含所有选定的DOM元素

$li.find("a")[0].setAttribute

it contain good description about jQuery Selector