Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何比较父级和子级的数据属性?_Javascript_Jquery - Fatal编程技术网

Javascript 如何比较父级和子级的数据属性?

Javascript 如何比较父级和子级的数据属性?,javascript,jquery,Javascript,Jquery,我试图比较子div和其父div的数据属性,如果它们不匹配,则隐藏子元素。我希望能够比较父子关系的每个实例。test是父项,event是子项。这是我的 if ($(".event").data("campaign-id") != $(".event").parent().data("campaign-id")) { $(".event").hide(); } dataas getter返回集合中第一个选定元素的指定数据。当第一个.event元素的活动id数据与其父

我试图比较子div和其父div的数据属性,如果它们不匹配,则隐藏子元素。我希望能够比较父子关系的每个实例。test是父项,event是子项。这是我的

    if ($(".event").data("campaign-id") != $(".event").parent().data("campaign-id")) {
        $(".event").hide();
    }

data
as getter返回集合中第一个选定元素的指定数据。当第一个
.event
元素的
活动id
数据与其父
活动id
数据匹配时,脚本将隐藏所有
.event
元素。您可以使用
.filter()
方法:

$(".event").filter(function() {
   return $(this).data("campaign-id") !== $(this.parentNode).data("campaign-id");
}).hide();
如果您获取的是
数据活动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';
    }
});
您可以使用
.each()
执行此任务:

 $(".event").each(function(){
     if($(this).data("campaign-id") != $(this).parent().data("campaign-id"))    
     {
          $(this).hide();
     }
 });

为什么不尝试一个简单的解决方案
函数checkAndHide($elem){if($elem.data(“活动id”)!=$elem.parent().data(“活动id”){$elem.hide();}}checkAndHide($(“.event”)