鉴于:
var element = $('#element');
我想知道哪个更快:
element.click(function(){ element.dosomething() )}
要么:
element.click(function(){ $(this).dosomething() )}
还是重要?
解决方法
使用元素.
如果element是一个匹配单个元素的jQuery集合,例如$(someId),那么只需使用它.
如果选择器是为了匹配多个元素,那么元素实际上是元素,一个元素的集合,所以在这种情况下,你可以在你的点击处理程序中使用$(this)来捕获实际点击的元素.
差异在下面的例子中解释:
单元件处理器
var table = $("#myTable"); table.click(function() { // Same as $(this),except $(this) creates another // wrapper on the same object (which isn't too expensive anyway) table.doSomething(); });
2-处理多个元素
var rows = $("#myTable > tbody > tr"); rows.click(function() { // Here we have to use $(this) to affect ONLY the clicked row $(this).doSomething(); });
3处理器在单个元素上,但是要求多个子元素
var table = $("#myTable"); // "on" and "live" call handler for only child elements matching selector // (Even child elements that didn't exist when we added the handler,as long as parent -table in this case- exists) table.on("click","tbody > tr",function() { // Here we have to use $(this) to affect ONLY the clicked row $(this).doSomething(); });
我发现它确保(并且减少工作,一个非常小的差异)只是现有的包装,显示我期待一个单一的元素在这种情况下,我只是使用它.当我处理匹配元素集合的元素时,使用$(this).