我正在尝试使用不是链接子项的类“blah2”获得所有跨度。例如,我想要这两个人:
<a href="nowhere.com"><span class="blah1"><span class="blah2"></span></span></a>
<a href="nowhere.com"><span class="blah2"></span></a>
我试过了:
$('.blah2').each(function(locator_id){
if (!$(this).parent().attr("href")){
//do stuff
} else {
//do other stuff
}
});
问题是这只适用于上面的第二种情况。即使链接可能不是直接父母,还是要检查这个吗?
答案 0 :(得分:4)
结帐closest
。你可以这样做:
if ($(this).closest('a').length === 0) {
答案 1 :(得分:1)
使用parents()
代替parent()
来获取层次结构树上方的所有父级。
$('.blah2').each(function(locator_id){
if (!$(this).parents('a').length){
//do stuff
} else {
//don't do stuff
}
});
答案 2 :(得分:0)
这个怎么样?
if($(this).parent().is('a'))
// do stuff
<强>更新强>
我没有考虑到span
可能不是直系后代。
if($('.span').closest('a').length !== 0)
// do stuff
答案 3 :(得分:0)
而不是列出范围$('.blah2')
,然后检查它的父级,将您的选择器更改为此类$('a .blah2')
,以确保所有<span>
实际位于<a>
答案 4 :(得分:0)
这对你也有用:
http://jsfiddle.net/sanpopo/WfL78/
$(document).ready(function () {
if($('.blah2').parents().attr("href")){
alert('I have href parent tags');
} else {
alert('I do not have href parent tags');
}
});
答案 5 :(得分:-1)
我会用这个
$('a .blah2')。length //错误
抱歉$('.blah2').length - $('a ~ .blah2').length
答案 6 :(得分:-1)
您必须创建一个检查每个父节点的递归函数:http://jsfiddle.net/TUUba/
function insideLink(el) {
if(el.parentElement != null) {
if(el.parentElement.nodeName == "A") {
return true;
}
// Call the function checking the parent element
return arguments.callee(el.parentElement);
}
else {
return false;
}
}
$('.blah2').each(function(locator_id) {
alert("insideLink: " + insideLink(this));
});