我有一个项目列表,其中包含使用data-type
属性的标记。我试图遍历项目以获取数组中的每个标记。如果列表项有多个标记(用逗号分隔),我想拆分标记并清理任何空格。
这是我的HTML:
<div class="article-wrap">
<ul class="articles">
<li sata-type="tag3"> <a href="#">LTE opens vast new business and revenue opportunities. Here's how to get ready.</a>
</li>
<li data-type="tag3"> <a href="#">Bringing NFC into the Digital Home</a>
</li>
<li data-type="tag3, tag4"> <a href="#">Keep Up with Rapidly-changing Wi-Fi Standards, Techniques and Markets</a>
</li>
<li data-type="tag1"> <a href="#">Technicolor Professional Services help NSPs reduce software vulnerability</a>
</li>
<li data-type="tag2, tag3"> <a href="#">Our New Satellite/terrestrial HD Set-top Box Provides a Smooth Path to HDTV.</a>
</li>
</ul>
</div>
这是我的JS:
$(function () {
var items = $('.article-wrap li'),
itemsByTags = {};
// Looping though all the li items:
items.each(function (i) {
var elem = $(this),
tags = elem.data('type').split(',');
// Adding a data-id attribute
elem.attr('data-id', i);
$.each(tags, function (key, value) {
// Removing extra whitespace:
value = $.trim(value);
if (!(value in itemsByTags)) {
// Create an empty array to hold this item:
itemsByTags[value] = [];
}
// Each item is added to one array per tag:
itemsByTags[value].push(elem);
});
});
});
我相信这应该可以正常工作,唉,我得到未捕获的TypeError:无法调用未定义的方法'split'。你可以在这里看到:http://jsfiddle.net/94UUF/2/
我可以使用相同的items
var来修改CSS等,但.split
函数似乎不想玩球。请指教!
答案 0 :(得分:1)
你注意到了吗?
<li sata-type="tag3">
sata
而不是data
因此错误:
Uncaught TypeError: Cannot call method 'split' of undefined.
答案 1 :(得分:1)
您实际上可以在数据标记中嵌入对象文字。因此,如果您执行data-type='["tag3”, ”tag4”]'
,则.data('type')
将返回一个数组。