Javascript 元素是某个类的后代吗? 你好 hi3

Javascript 元素是某个类的后代吗? 你好 hi3,javascript,Javascript,如何使用JavaScript测试一个元素是否是类blah的元素的子元素(或孙辈、孙辈等)?(换句话说:如果一个元素包含在类blah的元素中) 注意:在一些测试之后,.contains(…)似乎不是解决方案。通过父母循环,检查每个父母 <div class="blah"> <div id="hi">Hi</div> <div id="hi2"> <p id="hi3">Hi3</p> </div>

如何使用JavaScript测试一个元素是否是类
blah
的元素的子元素(或孙辈、孙辈等)?
(换句话说:如果一个元素包含在类
blah
的元素中)


注意:在一些测试之后,
.contains(…)
似乎不是解决方案。

通过父母循环,检查每个父母

<div class="blah">
  <div id="hi">Hi</div>
  <div id="hi2">
    <p id="hi3">Hi3</p>
  </div>
</div>

通过父母循环,检查每个人

<div class="blah">
  <div id="hi">Hi</div>
  <div id="hi2">
    <p id="hi3">Hi3</p>
  </div>
</div>

通过父母循环,检查每个人

<div class="blah">
  <div id="hi">Hi</div>
  <div id="hi2">
    <p id="hi3">Hi3</p>
  </div>
</div>

通过父母循环,检查每个人

<div class="blah">
  <div id="hi">Hi</div>
  <div id="hi2">
    <p id="hi3">Hi3</p>
  </div>
</div>

使用
匹配项

function isContainedByClass(src,cls) {
    while(src && src.tagName) {
        if( src.classList.contains(cls)) return true;
        // apply old-browser compatibility as needed

        src = src.parentNode;
    }
    return false;
}
看。检查浏览器兼容性

另见

如果目标浏览器需要前缀,Modernizer会有所帮助:

elt.matches('.blah *')

请参阅。

使用
匹配项

function isContainedByClass(src,cls) {
    while(src && src.tagName) {
        if( src.classList.contains(cls)) return true;
        // apply old-browser compatibility as needed

        src = src.parentNode;
    }
    return false;
}
看。检查浏览器兼容性

另见

如果目标浏览器需要前缀,Modernizer会有所帮助:

elt.matches('.blah *')

请参阅。

使用
匹配项

function isContainedByClass(src,cls) {
    while(src && src.tagName) {
        if( src.classList.contains(cls)) return true;
        // apply old-browser compatibility as needed

        src = src.parentNode;
    }
    return false;
}
看。检查浏览器兼容性

另见

如果目标浏览器需要前缀,Modernizer会有所帮助:

elt.matches('.blah *')

请参阅。

使用
匹配项

function isContainedByClass(src,cls) {
    while(src && src.tagName) {
        if( src.classList.contains(cls)) return true;
        // apply old-browser compatibility as needed

        src = src.parentNode;
    }
    return false;
}
看。检查浏览器兼容性

另见

如果目标浏览器需要前缀,Modernizer会有所帮助:

elt.matches('.blah *')
请参阅。

**查看此项**
============================================================================
.a*
{ 
显示:块;
边框:2件纯色浅灰色;
颜色:浅灰色;
填充物:5px;
利润率:15px;
}
$(文档).ready(函数(){
//用于检查类别为c1的跨度是否为类别a元素的子元素
如果($('.a').children('span.c1')。长度>0){
控制台日志(“找到”);
}
//用于检查类别为c1的跨度是否具有类别为a的父元素
如果($('.c1')。父项('.a')。长度>0){
控制台日志(“找到”);
}
});
A.
B
b1
b2
b3
C
c1

c2

**请查看此项**
============================================================================
.a*
{ 
显示:块;
边框:2件纯色浅灰色;
颜色:浅灰色;
填充物:5px;
利润率:15px;
}
$(文档).ready(函数(){
//用于检查类别为c1的跨度是否为类别a元素的子元素
如果($('.a').children('span.c1')。长度>0){
控制台日志(“找到”);
}
//用于检查类别为c1的跨度是否具有类别为a的父元素
如果($('.c1')。父项('.a')。长度>0){
控制台日志(“找到”);
}
});
A.
B
b1
b2
b3
C
c1

c2

**请查看此项**
============================================================================
.a*
{ 
显示:块;
边框:2件纯色浅灰色;
颜色:浅灰色;
填充物:5px;
利润率:15px;
}
$(文档).ready(函数(){
//用于检查类别为c1的跨度是否为类别a元素的子元素
如果($('.a').children('span.c1')。长度>0){
控制台日志(“找到”);
}
//用于检查类别为c1的跨度是否具有类别为a的父元素
如果($('.c1')。父项('.a')。长度>0){
控制台日志(“找到”);
}
});
A.
B
b1
b2
b3
C
c1

c2

**请查看此项**
============================================================================
.a*
{ 
显示:块;
边框:2件纯色浅灰色;
颜色:浅灰色;
填充物:5px;
利润率:15px;
}
$(文档).ready(函数(){
//用于检查类别为c1的跨度是否为类别a元素的子元素
如果($('.a').children('span.c1')。长度>0){
控制台日志(“找到”);
}
//用于检查类别为c1的跨度是否具有类别为a的父元素
如果($('.c1')。父项('.a')。长度>0){
控制台日志(“找到”);
}
});
A.
B
b1
b2
b3
C
c1

c2



由jquery提供traversing@kki3908050使用这些jQuery遍历祖先的方法,您将如何编写一个
函数isContainedByClass(src,cls)
?你能举个小例子吗?我已经创建了下面的代码,请通过jquery检查traversing@kki3908050使用这些jQuery遍历祖先的方法,您将如何编写一个
函数isContainedByClass(src,cls)
?你能举个小例子吗?我已经创建了下面的代码,请通过jquery检查traversing@kki3908050使用这些jQuery遍历祖先的方法,您将如何编写一个
函数isContainedByClass(src,cls)
?你能举个小例子吗?我已经创建了下面的代码,请通过jquery检查traversing@kki3908050使用这些jQuery遍历祖先的方法,您将如何编写一个
函数isContainedByClass(src,cls)
?你能举个小例子吗?我已经在下面创建了代码,请检查。你可能应该在回答中明确说明,源元素本身也被考虑在内(就像jQuery的方法一样),因此,如果你传递的类也被源元素公开,你就无法匹配祖先。@Leo,我希望你不是认真的:)(如果
src
一开始就是
null
,该怎么办?)我想没有人会费心去测试这个。如果没有找到匹配项,它将前进到document元素,该元素没有
类列表
,并导致JS错误。@torazaburo更正了,殿下。我已经撤销了我的否决票,但最初的解决方案有两个问题。在没有匹配项的情况下运行DOM的顶部现在是ad第二个没有;正如另一位评论者所指出的,解决方案实际上仍然不符合规范,即“类元素的子元素(或孙辈,或孙辈,等等)”,而不是“后代或自我”。您可能应该在回答中明确指出,源元素本身是被考虑在内的(就像jQuery的方法一样),因此如果传递的类也是e,则无法匹配祖先