后台生成的添加事件需要用事件代理的形式。
就是用delegate,新版本的jquery直接集成在on里边了。
http://blog.csdn.net/itchiang/article/details/21596761

解决方案 »

  1.   


    我不想用jq,js如何实现 啊?
      

  2.   

    将事件绑定在body或者你ul的父元素上  然后根据target和srcElement做对应处理
      

  3.   


    我不想用jq,js如何实现 啊?
    3楼已经告诉你答案了。
      

  4.   

    你的代码有问题啊。。空白节点在标准浏览器下也算一个节点去掉空白节点,删除一组nextSibling
    <div id="menu">
    <ul><li><em></em><a href="detail.php?id=2">test1</a><ul><li class="end">test2</li><li class="end">test3</li></ul></li><li class="end">tafaf</li></ul>
    <hr />
    <ul><!--不要留空白节点-->
        <li><em></em><a href="detail.php?id=2">test1</a><ul>
                <li class="end">test2</li>
                <li class="end">test3</li>
            </ul>
        </li>
        <li class="end">tafaf</li>
    </ul>
     
     
    </div>
    <script type="text/javascript">
        (function (e) {
            for (var _obj = document.getElementById(e.id).getElementsByTagName(e.tag), i = -1, em; em = _obj[++i]; ) {
                em.onclick = function () { //onmouseover
                    var ul = this.nextSibling; //A
                    if (!ul) { return false; }
                    //删除这组nextSibling
                   // ul = ul.nextSibling; if (!ul) { return false; } //第一个为UL,第二个为空白节点                if (e.tag != 'a') {
                        ul = ul.nextSibling;
                        if (!ul) { return false; } //第一组变为NULL,第二组变为ul
                    } //a 标签控制 隐藏或删除该行                for (var _li = this.parentNode.parentNode.childNodes, n = -1, li; li = _li[++n]; ) {
                        if (li.tagName == "LI") {
                            for (var _ul = li.childNodes, t = -1, $ul; $ul = _ul[++t]; ) {
                                switch ($ul.tagName) {
                                    case "UL":
                                        $ul.className = $ul != ul ? "" : ul.className ? "" : "off";
                                        break;
                                    case "EM":
                                        $ul.className = $ul != this ? "" : this.className ? "" : "off";
                                        break;
                                } //for
                            } //if
                        } //for
                    } //if
                } //if
            } //for
        })({ id: 'menu', tag: 'em' });
    </script>