通过class名,取得元素节点

    昨天在做一个点击展开关闭效果的时候,为了方便重用,不考虑通过id来取得元素,而是通过可重用的class来取得元素。可是底层的js并不提供这个方法。一开始看YUI的api,看到有相关的方法,叫做getAncestorByClassName(),在本地试了下,虽然比不上jq的parents()方法好用,不过,也还算可以了。很顺利地完成了我想要的效果,可是传到网上去以后,却发现不能用。因为线上的YUI库是个版本比较老的版本,我猜很可能是还不支持这个方法。没办法,今天自己封装了个函数,提供同样的功能。

=======================demo============================

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script type="text/javascript">
var getAncestorByClassName = function(node,oClassName){
   var obj = typeof node == "string" ? document.getElementById(node):node;
   while(obj.parentNode!=document){
    if(obj.parentNode.className==oClassName){
     return obj.parentNode;
    }else{
     obj = obj.parentNode;
    }
   }
   return null;
}
window.onload = function(){
   var test = document.getElementById("test");
   test.οnclick=function(){
    var adang = getAncestorByClassName(this,"adang");
    alert(adang.title);
   }
}
</script>
<body>
<div class="adang" title="hello" id="demo">
<ul class="adang2" title="world">
   <li>
    <p>
     <a href="#" id="test">test</a>
    </p>
   </li>
</ul>
</div>
</body>
</html>

函数getAncestorByClassName 接收两个参数,第一个为元素节点,类型为DOM节点元素或者是对象的id都可以,第二个为想要取得的父节点的class名。返回值类型是DOM节点元素,如果没有找到,则返回null。这个例子很简单,可以举一返三写出通过 class名返回子节点元素等等功能,我就不多写了。

转载于:https://www.cnblogs.com/cly84920/archive/2008/08/28/4427115.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值