使用 jQuery 处理程序是否更好?
我的意思是,如果我有这个处理程序:
$(document).ready(function() {
$('.myElement').change(function() {
// some
});
});
例如链接到“400”元素,它会慢一些,
function myFunct() {
// some
{
<select class="myElement'" onchange="myFunct(this);return false">
// one of 400 elements. Each of this use that onchange link
</select>
因为事实上我只需要在“更改”某些内容时才需要调用该函数(所以我不明白为什么我需要处理 400 个元素,资源最差)。
你觉得怎么样?
I mean, if I have this handler :
$(document).ready(function() {
$('.myElement').change(function() {
// some
});
});
linked to "400" elements for example, it will be slower than
function myFunct() {
// some
{
<select class="myElement'" onchange="myFunct(this);return false">
// one of 400 elements. Each of this use that onchange link
</select>
because in fact I need to call that function only when I "change" somethings (so I don't understand why I need to handle 400 elements, worst of resource).
What do you think about?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,它会更慢,因为浏览器必须附加所有这些元素的处理程序,这可能会导致页面加载“滞后”,在此期间您的用户可能能够与没有附加处理程序代码的元素进行交互。
不过,您仍然可以以高性能的方式使用 jQuery,只需使用一个委托 处理程序。
更新! jQuery 1.7 示例(使用
.on
):Yes it will be slower since the browser must attach a handler all of those elements, which could cause a "lag" on page load during which your user might be able to interact with elements which have no handler code attached to them.
You can still use jQuery in a performant way, however, using just one delegated handler.
Update! jQuery 1.7 example (using
.on
):开始吧:
诀窍是定义一个函数对象,然后使用该函数作为所有元素的更改处理程序。
Here you go:
The trick is to define one function object, and then use that one function as the change handler for all your elements.
我认为在这种情况下第二个更好。您也可以在函数中使用 jQuery
http://jsperf.com/testaaa
jQuery 的调用:67,194/
秒函数调用:114,142,715/秒
I think that second one is better in this case. You can use jQuery inside your function, too
http://jsperf.com/testaaa
jQuery's call: 67,194/sec
your function calls: 114,142,715/sec