如何将jQuery插件函数仅限制为某些元素?

时间:2011-12-15 11:49:31

标签: jquery jquery-plugins

我查看了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 个答案:

答案 0 :(得分:1)

你可以......

this.filter('textarea')

如果您对返回的集合执行each(),则只会迭代选定的textarea元素。

答案 1 :(得分:0)

检查/保存高度之前,检查以确保元素是textarea。

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

jQuery插件不为某些元素提供函数,它们为jQuery对象提供函数以处理一组选定的元素。最好的解决方案是尽可能保持通用,只在需要时调用$("textarea").maxHeight()。您没有对插件中的textarea做任何特定的操作,如果您现在保留它,如果$('div').maxHeight()成为必需,您将来不需要对其进行更改用例。