Как ограничить функцию плагина jQuery только некоторыми элементами? - PullRequest
2 голосов
/ 15 декабря 2011

Я проверяю сайт плагинов jQuery, который учит меня, как написать основной плагин:

(function( $ ){
  $.fn.maxHeight = function() {
    var max = 0;
    this.each(function() {
      max = Math.max( max, $(this).height() );
    });
    return max;
  };
})( jQuery );

Тогда у div может быть метод maxHeight, например:

var tallest = $('div').maxHeight(); // Returns the height of the tallest div

Но я бы хотел, чтобы только у textarea была функция maxHeight, а не div. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Вы могли бы сделать ...

this.filter('textarea')

Если вы введете each() для возвращенного набора, он будет повторяться только для выбранных textarea элементов.

0 голосов
/ 15 декабря 2011

Убедитесь, что элемент является текстовой областью, прежде чем проверять / сохранять высоту.

this.each(function() {
    if(this.tagName.toLowerCase() === "textarea") {
        max = Math.max( max, $(this).height() );
    }
});

Плагины jQuery не предоставляют функций определенным элементам, они предоставляют функции объекту jQuery для работы снабор выбранных элементов.Лучшее решение - сохранить их как можно более общими и вызывать $("textarea").maxHeight() только тогда, когда вам это нужно.Вы не делаете ничего особенного для textarea s в плагине, и если вы оставите все как есть, вам не нужно вносить изменения в него в будущем, если $('div').maxHeight() станет обязательным вариантом использования.

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