zoukankan      html  css  js  c++  java
  • 通过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.onclick=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名返回子节点元素等等功能,我就不多写了。

  • 相关阅读:
    一次摸鱼
    scenes
    mysql日志
    十万个为什么
    ss
    mysql之explain
    mysql之索引
    mysql1
    分页
    ajax分页
  • 原文地址:https://www.cnblogs.com/cly84920/p/4427116.html
Copyright © 2011-2022 走看看