通过仅使用javascript检查父元素是否包含特定的CSS类?

时间:2013-01-16 14:04:35

标签: javascript

当我点击任何DOM元素时,我想检查其parent元素是否包含特定的类。我正在尝试这种方式,但无法实现这一目标。有谁知道怎么样?

document.onclick=function(e){
    console.log(e.parentElement('.drop').id);       
}

请仅在JavaScript中提供解决方案 - 我不能使用jQuery。

3 个答案:

答案 0 :(得分:5)

您可以使用父元素的classList属性。它有一个contains()方法,可用于您的目的:

document.onclick=function(e){
    console.log( e.parentElement.classList.contains( 'drop' ) );       
}

如果您的目标是Internet Explorer(IE <10),您可以手动解析类列表并在其中查找“drop”:

document.onclick=function(e){
    console.log( e.parentElement.className.split(' ').indexOf('button-panel')!==-1 );
}

split()将className解析为数组中的多个名称。 indexOf()在数组中搜索元素,如果找不到,则返回-1

答案 1 :(得分:0)

传递给事件处理程序的e是事件对象,而不是被单击的元素。尝试抓取srcElement,然后抓住父亲的className。此外,由于你不能使用jQuery,传递像.drop这样的选择器不会做任何事情,只会导致语法错误。

document.onclick = function(e){
    console.log(e.srcElement.parentNode.className);

    e.stopPropagation(); // don't bubble
};

Working example

答案 2 :(得分:0)

now i got the answer 

document.onclick=function(e){   
    if (!e) e = window.event;
        curDD = findparentClass(e.target.parentNode,'drop');
        console.log(curDD);
    }
}
function findparentClass(node, clsName) {           
    if(node.className != clsName && node.className!=null){
        return findparentClass(node.parentNode,clsName);                    
    }else if(node.className!=null){
        return true;    
    }
}

其中'drop'是您要搜索的类......