请教是否可以实现如下效果: 
   <ul>
    <li></li>
    .....若干个li
    <li></li>
   </ul>
  

在所有的子元素li上绑定click事件?传统的做法,遍历进行绑定,那么大侠们,有没有办法实现如下效果:只在ul上绑定click事件就能实现所有的子元素li也绑定click事件?这是一道面试题,请教各位大侠,谢谢!

解决方案 »

  1.   

    -----
    用jquery,可以一次性把所有li都绑上click事件。
    但你说的在UL上绑定的话,那就是针对UL的,会出错的。
      

  2.   

    用jquery的具体方法:
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
    <script>
     $(document).ready(function() {
       $('li').click(function(){
    你要干什么就写这吧;
    }); 
    });
    </script>
      

  3.   


    var ul1 = document.getElementById('ul1');
    ul1.onclick = function(e){
       var e = e||window.event;
       var target =e.srcElement||e.target;
       if(target.tagName.toLowerCase()=='li'){
            alert(target.innerHTML);
       }
    }   
      

  4.   

    绑定到<ul>也可以。利用事件向上冒泡。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>bubble event</title>
    <script src="../../../lib/jquery/jquery-1.4.2.js"></script><script>
        $(document).ready(function(){
           $("ul").click(function(evt){
                if (evt.target.nodeName == "LI") {
                    alert('clicked on li element:' + evt.target.innerHTML);
                }
           })
        });
    </script>
    </head>
    <body>
        <div id="content">
            <ul>
                <li>beijing</li>
                <li>shanghai</li>
                <li>dalian</li>
                <li>shenyang</li>
                <li>shenzhen</li>
            </ul>
        </div>
    </body>
    </html>
      

  5.   


    JS对于函数类型的变量,都是引用类型的,因此不会复制一个副本,而是创建一个指向该函数的指针。
    JS下只有undefined、nulll、Number、 String、boolean是基本类型,这些类型的变量在赋值语句中才会创建副本。
      

  6.   


    类似于
    id.onclick=函数名称
    的写法是复制了一个副本
      

  7.   


    不是。只是副本。通过函数名称找到函数在内存中对象,然后将该对象的指针赋值给id.onclick当然,也不绝对。比如,LZ自己修改JS引擎,做一个复制而不是引用,那另当别论