У меня есть список элементов, которые будут содержать тег с использованием атрибута 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);
});
});
});
Я считаю, что это должно работать нормально, увы, я получаю Uncaught TypeError: Cannot call method 'split' of undefined. Вы можете увидеть это здесь: http://jsfiddle.net/94UUF/2/
Я могу использовать ту же переменную items
для изменения CSS и т. д., но функция .split
, похоже, не хочет играть в мяч. Пожалуйста, порекомендуйте!
data-type
запятыми. Вместо этого разделяйте пробелами, так как в любом случае это нормально для классов. - person Blazemonger   schedule 26.02.2013<li sata-type="tag3">
это опечатка только в примере? Объяснили бы ошибку... - person Stefan   schedule 26.02.2013data-
, вы могли бы просто использовать селекторы jQuery вместо того, чтобы самостоятельно анализироватьdata
. - person Blazemonger   schedule 26.02.2013$('.article-wrap li.tag3').get()
. Я не считаю это неправильным использованием классов, поскольку (а) вы можете добавить столько классов, сколько захотите, и (б) вы не храните фактические данные как класс, а просто произвольное имя. - person Blazemonger   schedule 26.02.2013