我需要找到一些元素,并在我的代码中的多个位置更改一些属性,唯一的问题是,我需要通过将数据属性拆分为数组来找到这些元素。
示例,我给了一个choice_id,每个.question都有一个带有一堆choice_id的属性,插入如下:
<div class="question" data-expanded-by="2,10,28">
<div class="question" data-expanded-by="2">
说我给了choice_id = 2,我假设我不能为这样的集合写一个选择器
$('div.question[data-expanded-by=...])
所以我写了这个小函数来获取元素并将它们作为jQuery集合返回。唯一的问题是,对返回的值调用$ questions.show()无效,即使集合已填充。
function findQuestionsExpandedByChoice($, $question_list, choice_id) {
$questions = $([]);
$.each($question_list.find('div.question[data-expanded-by]'), function() {
ids = $(this).attr('data-expanded-by').split(',');
if (isInArray(choice_id, ids)) {
$questions.push($(this));
}
});
return $questions;
}
function isInArray(value, array) {
return array.indexOf(value) > -1;
}
EDIT 我忘了提到我有能力将数据扩展值保存为我想要的任何东西,是否有更聪明的方法来做到这一点而不是将它们保存为分开的数字?在某种程度上,我可以直接查询它们。据我所知,HTML不支持重复的数据属性。