废话不说了,功能函数如下
/*
* @Author : Jeen @ vsfor.com
* @Describe : 根据节点名称,查找某节点的特定父节点
* @params :
* node dom节点
* pname 父节点名称 parentNode.nodeName
* level 可选参数,层级,默认为1层
* @example :
*
* 假定nodeA表示其中的 a 节点,则 getParentNode(nodeA,'div',3); 返回的是 id 为 b 的 div节点
*/
function getParentNode(node,pname){
level = arguments[2] ? (arguments[2]-1) : 0;
if(node.nodeName == 'BODY') return node;
var tnode = node.parentNode;
pname = pname.toUpperCase();
while(tnode.nodeName != pname && tnode.nodeName != 'BODY')
{
tnode = tnode.parentNode;
}
if(level === 0)
{
return tnode;
}
else
{
return getParentNode(tnode,pname,level);
}
}
顺便附上测试代码和效果图吧:
parentNode测试定位目标元素的 特定 父 元素
$(function(){
$('#nodeA').click(function(){
var tnode = getParentNode(this,'div',3);
alert($(tnode).attr('id'));
return false;
});
});
function getParentNode(node,pname){
level = arguments[2] ? (arguments[2]-1) : 0;
if(node.nodeName == 'BODY') return node;
var tnode = node.parentNode;
pname = pname.toUpperCase();
while(tnode.nodeName != pname && tnode.nodeName != 'BODY')
{
tnode = tnode.parentNode;
}
if(level === 0)
{
return tnode;
}
else
{
return getParentNode(tnode,pname,level);
}
}