我敢肯定这是一个多余的问题,但我已经找了一个小时左右,空手而归,所以希望有人能帮忙......
寻找一种在搜索“鸡”(或任何值)时使用 JS(不是 jquery)返回下面 li 的类的方法。
<li class='113252'>
<span>Chicken</span>
</li>
所以希望javascript在给定span值时返回li类(在本例中为Chicken)。
谢谢!
我敢肯定这是一个多余的问题,但我已经找了一个小时左右,空手而归,所以希望有人能帮忙......
寻找一种在搜索“鸡”(或任何值)时使用 JS(不是 jquery)返回下面 li 的类的方法。
<li class='113252'>
<span>Chicken</span>
</li>
所以希望javascript在给定span值时返回li类(在本例中为Chicken)。
谢谢!
尝试这个:
var spanArray = document.getElementsByTagName('span');
for (var i=0; i<spanArray.length; i++) {
if(spanArray[i].innerHTML.toUpperCase() === 'CHICKEN')
{
alert(spanArray[i].parentNode.className);
break;
}
}
现在,我更熟悉 jQuery,但似乎在此处链接的小提琴中工作:http: //jsfiddle.net/FranWahl/fCzYc/2/(更新以包括break;
匹配后的建议)
您可以为 the 添加更多类型检查parentNode
以确保它是 anli
等等,但这应该可以帮助您入门。
另外,我完全不确定这在大文档中的效率如何。
编辑
阅读了一些评论后,我更新了上面的代码,以包括ajax333221建议的中断。
丹尼斯提到最好打电话getElementByTagName
给ul
. 鉴于你可以有一个li
没有 aul
我在这里添加它作为单独的代码,因为我不确定 OP 是否有ul
标签。
针对每个查询的代码(此处ul
为 jsFiddle )
var ulArray = document.getElementsByTagName('ul');
var parentFound = false;
for (var i = 0; i < ulArray.length; i++) {
var spanArray = ulArray[i].getElementsByTagName('span');
for (var i = 0; i < spanArray.length; i++) {
if (spanArray[i].innerHTML.toUpperCase() === 'CHICKEN') {
alert(spanArray[i].parentNode.className);
parentFound = true;
break;
}
}
if(parentFound)
{
break;
}
}
这绝不是完全完整的,这就是你应该寻找图书馆的原因,但它做了两件事:
JSFiddle:http: //jsfiddle.net/vol7ron/bttQN/
function getParentClass(element, parentTag){
if (element.tagName == parentTag.toUpperCase())
return element.className;
return getParentClass(element.parentNode,parentTag);
}
window.findParentClass = function (text,tagName){
var elements = document.getElementsByTagName('body');
for (var n=elements.length; n--;){
var foundClass = (function searchNextChild(el){
if (!el.children.length) {
if (el.textContent == text)
return getParentClass(el,tagName);
return;
}
for (var i=0, n=el.children.length; i<n; i++)
return searchNextChild(el.children[i]);
})(elements[n]);
return foundClass;
}
};
示例调用:
alert( findParentClass('Chicken','li') );