jQuery - 相当于each(),但是对于单个元素

Ale*_*lex 31 javascript jquery jquery-selectors

每个()的jQuery等价物是什么:

$(".element").each(function(){  
  // do stuff
});
Run Code Online (Sandbox Code Playgroud)

将函数附加到单个元素时,如#element

use*_*716 19

您始终可以在变量中引用jQuery对象:

var $el = $('#element');
Run Code Online (Sandbox Code Playgroud)

......然后操纵它.

$el.doSomething();          // call some jQuery methods from the cached object
$el.doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

如果您想要的原因.each()是引用DOM元素this,您实际上不需要this关键字来执行它,您可以简单地从jQuery对象中获取DOM元素.

var element = $('#element')[0];       // both of these give you the DOM element
var element = $('#element').get(0);   //        at index 0
Run Code Online (Sandbox Code Playgroud)

这两种这些都是等价的,并且将检索,将作为被引用的DOM元素this.each().

alert( element.tagName );  // alert the tagName property of the DOM element
alert( element.id );       // alert the ID property of the DOM element
Run Code Online (Sandbox Code Playgroud)

我注意到,使用每个迭代单个元素并不一定是坏事.

好处是您可以轻松访问DOM元素,并且可以在新范围内执行此操作,因此不会使用变量使周围的命名空间混乱.

还有其他方法可以实现这一目标.举个例子:

(function( $ ) {

    // Inside here, "this" will refer to the DOM element,
    //    and the "$" parameter, will reference the jQuery library.

    alert( this.tagName );

    // Any variables you create inside will not pollute the surrounding 
    //     namespace.

    var someVariable = 'somevalue'; // is local to this function

}).call( $('#element')[0], jQuery );
Run Code Online (Sandbox Code Playgroud)

  • `$('#element')[0]!= $('#element').get(0)`前者返回DOM元素,后者返回DOM元素的jQuery映射对象.你可以调用`$('#element').get(0).click(function ...);`而`$('#element')[0] .click(function ...);``无效. (2认同)

Bol*_*ock 13

要直接回答您的问题,请.each()在包括1的任何大小的元素集上正常运行.

您也可以.each()完全省略调用,只需调用jQuery方法即可$('#element').请记住,在返回jQuery对象时,您可以链接大多数(如果不是全部)jQuery方法调用.这甚至适用于此问题的多个元素,具体取决于方法的作用.

$('#element').doSomething().doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

如果需要多次引用该对象,请创建一个变量:

var $elm = $('#element');
$elm.doSomething();
doSomethingElse($elm);
Run Code Online (Sandbox Code Playgroud)


Gol*_*rol 9

使用first().

each()匹配所有元素,而first()仅匹配第一个元素.

还有其他选择器.当您在选择器中使用id时,您将只获得一个元素.这是.element和之间的主要区别#element.第一个是可以分配给许多元素的类,而第二个是仅属于(最多)一个元素的id.

如果只返回一个(或0)元素,您仍然可以使用每个元素.此外,如果要链接事件,则可以完全跳过每个.each当您想要为元素列表中的每个元素执行特定函数时使用.

  • 谢谢!我来这里寻找这个.所有其他答案似乎不必要地将函数添加到扩展方法中. (4认同)