代码之家  ›  专栏  ›  技术社区  ›  Jake

jquery:是element.click(func)还是element.attr(‘onclick’,‘func()’)更有效?

  •  1
  • Jake  · 技术社区  · 14 年前

    我正在通过克隆元素来填充一个列表。然后我改变属性使每个项目都独一无二。他们需要在单击时调用一个函数,所以我想知道使用它是否更有效 new_element.click(func); new_element.attr('onlick','func();');

    5 回复  |  直到 13 年前
        1
  •  4
  •   bobince    14 年前
    new_element.attr('onclick','func();');
    

    是:

    • 效率低下(不必要地从字符串创建新的内联函数,除了调用func和丢失 this 参考文献;

    • 把任何复杂的代码放进去都会使情况恶化,因为所有代码都必须是JS字符串转义的;

    • 在IE中损坏,由于 setAttribute .

    避免。 click() / bind('click') 有什么原因吗?

        2
  •  3
  •   Matthew Flaschen    14 年前

    onclick有很多限制,包括混乱DOM,一次只允许一个函数。所以应该使用click。见 Quirks Mode 更多信息。

        3
  •  1
  •   wombleton    14 年前

    直接引用函数比解释字符串更有效。

    然而,最简单的方法是:

    $(links_selector).live('click', func);
    

    links_selector 大概是 ul.listClass a.actionClass . 当添加新的列表元素时,不需要执行任何操作。

        4
  •  0
  •   rahul    14 年前

    既然您在使用jquery,那么就这样做

    new_element.click(function(){
        // your code
    });
    

    或者可以像这样绑定click事件处理程序

    new_element.bind("click", function(){
        // your code
    });
    
        5
  •  0
  •   Sasha Chedygov    14 年前

    两者在性能上的任何差异都很可能是微不足道的。你应该用读得更好的,那就是 element.click . (加上, onclick 有很多缺点,如@matthew flaschen提到的。)