jQuery - получить доступ ко всем элементам из функции each () - PullRequest
0 голосов
/ 30 января 2011

У меня есть функция 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 ]

6 голосов
/ 30 января 2011
(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.

2 голосов
/ 30 января 2011

Звучит так, будто вы надеетесь отфильтровать входные данные на основе атрибута 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);
1 голос
/ 30 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...