下面我有两个jQuery选择器.
第一个在缓存对象中搜索DOM元素,然后搜索其父元素,然后将父元素(表)分离为另一个dom元素. (例如2)
第二行(2行)通过缓存元素进行搜索.
(例如1)
$('element',table.setting.body).on('blur focus',table.focus).parents('parent').find('another element').on('click',function); // ex2 $('element',function); // ex 1 $('another element',table.setting.body).on('click',function); // ex 1
哪一个更快/最佳实践?
防爆. 1毫无疑问会更快地受到jQuery函数的影响,即. .hide().animate().show()但是,什么时候搜索DOM元素?
解决方法
看起来你正试图匹配table.setting.body中的不同后代,并对这些后代执行不同的任务,而不必两次指定table.setting.body.
您可以使用end()来实现此目的.例如,如果table.setting.body是一个jQuery对象,你可以写:
table.setting.body.find("element").on("blur focus",function).end() .find("another element").on("click",function);
(如果table.setting.body是一个DOM元素,则必须首先对它应用$()).
上面的代码只评估缓存对象一次,执行两次调用find()(比我的经验中使用上下文参数调用$()稍快一些),两次调用on()(与你的相同)和a单个调用end()(只从堆栈弹出一个项目,应该非常快).