不明白说的什么。。示例代码有兼容性问题    var list = document.getElementById("list");
    list.onclick = function (e) {
        e = e || window.event;
        var target = e.target || e.srcElement;
        alert(target.tagName)
    }

解决方案 »

  1.   

    不要用原生js写,较麻烦,可封装一下,或者使用库,
    你这个可以用jquery的事件委托很简单完成
    $('#list').delegate('a','click',function(){
        alert(this);
    });
      

  2.   

    兼容性我明白,我的意思是像这样结构复杂的HTML Dom,如何采用冒泡/捕获处理事件?
      

  3.   

    兼容性我明白,我的意思是像这样结构复杂的HTML Dom,如何采用冒泡/捕获处理事件?你这样就是冒泡事件!!!
      

  4.   

    var list = document.getElementById("list");
        list.onclick = function (e) {
          
        }我这也叫冒泡事件。
      

  5.   

    谢谢楼上几位的回答,是我描述不清楚,情况是这样的。
    比如手机网站:
    1: 对于结构简单的HTML比如<li>xxx</li>可以很方便通过冒泡/捕获在<li>上来触发事件;
    2: 对于结构复杂点的HTML比如<li><h3>xxx</h3><p><strong>xxx</strong>xxx</p></li>,我一般是通过遍历<li>触发事件,能否也像上面一样通过冒泡/捕获在<li>上触发事件呢?<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <ul id="listEasy">
        <li data-url="google">javascript</li>
        <li data-url="facebook">html5</li>
        <li data-url="twitter">design</li>
    </ul>
    <ul id="list">
        <li data-url="google">
            <h3>javascript<small>(23)</small></h3>
            <p><strong>script</strong>:javascript,go.</p>
        </li>
        <li data-url="facebook">
            <h3>html5<small>(3)</small></h3>
            <p><strong>mobile</strong>:backnone,angularjs.</p>
        </li>
        <li data-url="twitter">
            <h3>css3<small>(12)</small></h3>
            <p><strong>mobile</strong>:web,app.</p>
        </li>
    </ul>
    <script>
    //Mobile Site
    //listEasy Good
    var listE=document.querySelector("#listEasy");
    listE.addEventListener("click",function(e){
        var target=e.target;
        var data=target.getAttribute("data-url");
        //...
    },false);//list Normal
    /*
    var list=document.querySelector("#list").querySelectorAll("li");
    for(var i=0,len=list.length;i<len;i++){
        list[i].onclick=function(){ ... };
    }
    *///list Good?
    </script>
    </body>
    </html>
      

  6.   

    无论你多复杂,反正都会冒的,只是你捕不捕而已。
    right?
      

  7.   

    和你li里面包含的内容复杂有什么关系?只要点击li里面的内容都会触发li绑定的事件,除非li里面的对象添加了事件,阻止冒泡到li就不会执行li的事件
      

  8.   


    那比如这段代码:
    <li data-url="google">
            <h3>javascript<small>(23)</small></h3>
            <p><strong>script</strong>:javascript,go.</p>
        </li>
    点击<li>里面的任何子元素(h3,small,p,strong),页面都跳转到http://www.google.com(data-url="google"),该如何用冒泡/捕获实现呢? 谢谢
      

  9.   

     <li data-url="google">
            <h3>javascript<small>(23)</small></h3>
            <p><strong>script</strong>:javascript,go.</p>
    </li>一般情况下通过遍历<li>然后获取<li>的data-url属性值后进行页面跳转,比如到http://www.google.com。
    现在不想遍历<li>,想直接点击<li>里面的任何元素都跳转到http://www.google.com。
      

  10.   

    本帖最后由 showbo 于 2014-03-19 12:00:53 编辑
      

  11.   


    谢谢回复,请问这样做和遍历<li>哪个性能更好呢? 谢谢!
      

  12.   

    看你的结构了,li很多给ul添加事件性能好些如果li的内容很复杂,嵌套多层,给li添加