jQuery - 访问each()函数中的所有元素

时间:2011-01-30 20:01:31

标签: javascript jquery jquery-plugins

我有一个jquery函数可以挂钩所有输入元素,如:

$("input").blah();

如何从此功能中访问此类型的所有元素?不仅仅是当前由jQuery处理的那个。

该功能如下:

(function($) {
  $.fn.blah = function(){

     this.each(function(){

       // how can I access all elements of type "this" here?

       return this;
     });

 };

})(jQuery);

我想从所有这些元素中读取一些属性,然后根据这些属性对正在处理的当前元素执行一些操作

3 个答案:

答案 0 :(得分:6)

(function($) {
  $.fn.blah = function(){

     var that = this;
     this.each(function(index, element){

       // this here means the element in that[i]
       // that here means the original jQuery object.

       return this;
     });

 };

})(jQuery);

您可以将this保存在变量中,然后在.each回调中进行访问。

答案 1 :(得分:2)

听起来您希望根据type属性过滤输入。

我不知道你最终想要完成什么,但我想你可能不想在.each()循环中这样做。

我首先过滤不同的类型,然后进行循环。

(function($) {
  $.fn.blah = function(){

     var text = this.filter('[type=text]');
     var radio = this.filter('[type=radio]');
     var checkbox = this.filter('[type=checkbox]');

     text.each(function(){

       // do something with all "text" inputs

       return this;
     });

 };

})(jQuery);

另一种方法是只有一个循环,但根据type的值执行不同的操作。这只有在您不需要整个集合时才有效。

(function($) {
  $.fn.blah = function(){

     this.each(function(){

        if( this.type === "text" ) {
            // do something with text inputs
        } else if( this.type === "checkbox" ) {
            // do something with checkboxes
        }
        // and so on

     });

 };

})(jQuery);

答案 2 :(得分:1)

$('input').bind( "whatever", function() {
 $('input [type="' + $(this).attr( 'type' ) + '"] ).each( function () {
  //...whatever code here
  });
});