Javascript 元素是某个类的后代吗? 你好 hi3
如何使用JavaScript测试一个元素是否是类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>
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,则无法匹配祖先