是否调用$find是一个相对昂贵的操作
Is calling $find a relatively expensive operation?
我只是想知道这两种编码风格之间的优缺点:
var foo;
$(document).ready( function() {
foo = $find(fooID);
});
function OnBarClicked()
{
foo.doStuff();
foo.doMoreStuff();
}
相比function OnBarClicked()
{
$find(fooID).doStuff();
$find(fooID).doMoreStuff();
}
我觉得前者可能有问题,但我不知道为什么会有问题。另外,如果$find()
有寻道时间…在开始时找到所有保证被"找到"2次以上的变量,然后使用一个实例是否更有效?
编辑:$find描述和用法
var radListBox1ID = "<%= RadListBox1.ClientID %>";
var radListBox = $find(radListBox1ID);
alert(radListBox.get_id()); //Alerts RadListBox1.ClientID
假设您正在询问是否使用$()
查询一次DOM vs多个(每个语句一个)…
是的,它是更效率使用单个$()
和存储结果在一个变量中,而不是调用jQuery在每一个语句,如果你使用元素多次在同一范围…
这是特别有用的事件处理程序,你引用this
作为一个jQuery对象多次。
$('#element').click(function(e) {
var $clicked = $(this);
$clicked.doStuff();
$clicked.doMoreStuff();
});
首先,您觉得在第一个示例中存在一个问题,而且确实存在:您在onBarClicked
函数无法访问的本地上下文中声明foo
变量。如果你尝试使用它,你会得到一个未定义的错误。要解决这个问题,可以在全局作用域中声明foo
:
var foo;
$(document).ready(function () {
foo = $(fooID);
});
当涉及到你的实际问题时,简短的答案是:是的。运行一次搜索并存储结果将更快。
但是如果你只是通过它的ID来搜索一个元素,那么说实话,它可能不会有太大的区别。它真正重要的时候是当你有一个复杂的选择器,包括属性选择器、伪元素或后代组合符等等。您肯定希望保存该结果,而不是一次又一次地运行它。
第一个不起作用,因为foo不会在OnBarClicked
中定义。一旦文档准备好,foo
将在回调函数中设置。
我推荐这种方法:
$( function () {
// get all the references (to the DOM elements) ASAP
var header = $( '#header' )[0],
nav = $( '#navigation' )[0],
toolbar = $( '#toolbar' )[0];
// etc.
// now whenever you need to work with a referenced DOM element
// just wrap it inside a jQuery object
$( nav ).click( function () { ... });
});
相关文章:
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 如何快速找到一个绝对定位的子元素的相对定位的HTML父元素
- 相对于他在jQuery/Js中的一个内部数据对数组进行排序
- 使用Raphael.js可以相对定位一个元素,然后将其偏移一个绝对单位
- 如何捕获相对于常数值的下一个值
- 当下一个元素处于相对位置时,将鼠标悬停在浮点元素上不会触发
- 相对于另一个 css 元素定位一个元素,而不编辑 html
- 相对于另一个元素的位置元素不起作用
- 如何获取上一个/下一个非禁用选项的索引(相对于所选选项)
- 对数组进行排序并返回一个指示符数组,该数组指示已排序的元素相对于原始元素(new)的位置
- 我是否可以在 Bootstrap 3 中为折叠手风琴指定一个相对的“数据目标”,同时保留“折叠其他”功能
- 获取一个元素的宽度,并相对于第一个元素应用于另一个元素
- 在php和jquery中动态创建的表行中选择与加载的数据相对应的选项另一个选择选项
- 如何设置一个相对于自身高度而非宽度的响应比例图像
- 如何将dropdownlist相对于另一个dropdownlist
- 在canvas HTML5中检测对象相对于另一个对象的位置
- 滚动到一个相对于锚的位置
- CSS定位:如何使它相对于一个元素而不是另一个元素
- 如何用Three.js定义一个相对于矢量路径的粒子云