2014-12-29 3 views
0

Я хотел создать плагин JQuery, который поможет мне подсчитать общее количество раз, когда выбранный элемент присутствует в документе HTML: поэтому я написал следующее Jquery Plugin:, подсчитывая общее количество выбранных элементов в документе HTML, до console.logging

(function($){ 

    $.fn.test = function(options){ 

     var new_src, 
     src_storage = []; 


     return this.each(function(){ 
       get_prop($(this)); 
       log_it(); 
     }); 


     function log_it(){ 
      console.log(src_storage.length); 
     } 

     function get_prop(current){ 
      var temp = current.attr('src'); 
      src_storage.push(temp); 
     } 

    } 

}(jQuery)); 

теперь предположим, я называю плагин следующим образом:

$(document).ready(function(){ 
    $('img').test(); 
}); 

теперь результаты я получаю в консоли выглядит следующим образом: (у меня есть 9 изображений в моем HTML-документ)

1 
2 
3 
4 
5 
6 
7 
8 
9 

теперь результат я ожидал был:

9 

, но я предполагаю, что порядок выполнения такого в моем плагине, что непосредственно после get_prop ($ (это)); функция называется функцией log_it(), вызываемой.

так как я могу подсчитать общее количество элементов в документе, прежде чем регистрировать их?

EDIT: Следующий подход работает, не знаю, насколько хорошо или очистить это, хотя:

this.each(function(){ 
    get_prop($(this)); 
}); 

return this.each(function(){ 
     log_it(); 
}); 

Спасибо, что вы помощь будет действительно цениться.

Tenali.

+0

Почему вы не используете $ ('IMG'). Длина свойство Jquery? Он также вернет 9 в вашем случае. – SeeTheC

+0

@SeeTheC Я кодирую плагин, а не только пишу одноразовый снайпер. но я тоже попробую этот подход. Спасибо –

ответ

0

Удалите функцию log_it из return this.each, иначе она выполнит функцию log_it() для элемента EACH.

this.each(function(){ 
      get_prop($(this)); 
    }); 
    return log_it(); 
+0

Этот подход компрометирует chanability? –

0

Если вы хотите только длину, то используйте только так:

this.each(function(){ 
    get_prop($(this)); 
}); 

return log_it(); 

Вы получаете все числа, потому что вы назвали, что в цикле each в предыдущих кодах.

Здесь ссылка hows вы можете начать разрабатывать плагин, его начальные шаги. http://learn.jquery.com/plugins/basic-plugin-creation/

DEMO

+0

Подходит ли этот подход к компрометации? –

+0

@TenaliRaman Вы можете рассказать мне подробно, о чем вы говорите? Я не понимаю. –

Смежные вопросы