我试图将子div的数据属性与其父div进行比较,如果它们不匹配,则隐藏子元素。我希望能够比较父子关系的每个实例。 .test是父,.event是孩子。这就是我所拥有的。
if ($(".event").data("campaign-id") != $(".event").parent().data("campaign-id")) {
$(".event").hide();
}
答案 0 :(得分:3)
data
作为getter返回集合中第一个选定元素的指定数据。当第一个.event
元素的.event
数据与其父campaign-id
数据匹配时,您的脚本会隐藏所有campaign-id
元素。您可以使用.filter()
方法:
$(".event").filter(function() {
return $(this).data("campaign-id") !== $(this.parentNode).data("campaign-id");
}).hide();
如果您获得data-campaign-id
属性而不是jQuery存储的数据,则另一个选项是:
[].forEach.call(document.querySelectorAll('.event'), function(el) {
var c = el.getAttribute('data-campaign-id'),
p = el.parentNode.getAttribute('data-campaign-id');
if ( c !== p ) {
el.style.display = 'none';
}
});
答案 1 :(得分:1)
您可以使用.each()
执行此任务:
$(".event").each(function(){
if($(this).data("campaign-id") != $(this).parent().data("campaign-id"))
{
$(this).hide();
}
});