jQuery:是element.click(func)还是element.attr('onclick','func()')更高效?

时间:2010-04-29 04:56:01

标签: javascript onclick jquery

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

5 个答案:

答案 0 :(得分:4)

new_element.attr('onclick','func();');

时:

  • 效率低下(不必要地从字符串创建一个新的内联函数,除了调用func并且丢失this引用之外什么都不做);

  • 加重了任何复杂的代码,因为它必须被JS字符串转义;

  • 由于setAttribute中存在错误,
  • 在IE中被破坏。

避免。 click() / bind('click')是有原因的。

答案 1 :(得分:3)

onclick有许多限制,包括混乱DOM并且一次只允许一个函数。所以你应该使用点击。有关详细信息,请参阅Quirks Mode

答案 2 :(得分:1)

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

这样做的最低接触方式是这样的:

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

links_selector可能与ul.listClass a.actionClass类似。当添加新的列表元素时,这不需要做任何事情。

答案 3 :(得分:0)

因为你正在使用jQuery,所以就这样做

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

或者您可以绑定点击事件处理程序,如

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

答案 4 :(得分:0)

两者之间的任何性能差异很可能是微不足道的。你应该使用那个读得更好的那个,那就是element.click。 (另外,onclick有许多缺点,正如@Matthew Flaschen所提到的那样。)