本帖最后由 cpu220 于 2014-05-12 23:10:25 编辑

解决方案 »

  1.   

    live 自 1.9.0 起已废止,代之以 on。但写法区别很大
    click 只对随页面加载的元素有效
    第三种方法没有利用到 jquery 框架的性能三种方法有着各自不同的适用对象,目标不同不可做效率对比
      

  2.   

    你要想在写法更优,建议$('ul li').on();因为在jquery 1.7版本之后,所有的事件绑定的主入口函数是这个。就算click,bind('click',fn);最终还是走的on这条线。
    你要想在性能上最优,建议使用事件委托。$('ul').on('click','li',fn);
    是不是委托简单性能比较:
    http://www.cnblogs.com/aaronjs/p/3440647.html然后在看看你的写法,live已经在新版中被干掉了,click走on这条线。append只是一个添加dom结构,这种变相的事件绑定风险很大,且不易维护。
      

  3.   

    我用的是jquery1.4.2版本,对于楼主上述三种方式,其实前两种是符合jquery规范的,第三种建议不要用了。此外,第一种live()方式绑事件和第二种方法(实际上是bind()方式绑定事件)区别主要在于,对于动态添加的元素,只能用live()方法绑定事件比如你$(xxx).append("<li id='ttt'></li>");
    那么对这个$("#ttt")绑定事件时,只能用live()
      

  4.   

    推荐第一种,属于事件委托
    第二种属于常规绑定
    第三种建议不要用,就是跟你直接写DOM里面一个样,不易维护比如第二种常规的绑定,jQuery触发事件后会从你绑定时间的DOM层一层一层冒泡,如果是动态添加的元素就无法触发该事件
    而用第一种的话,属于事件委托,事件直接委托在DOM底层,省去了冒泡的时间,提高了执行效率,且可以触发动态添加的元素另外,如楼上所讲,live在新版本应被干掉了i