我一直在试图使它成为一个小的jQuery插件,我可以在将来重用,而不必将以下内容写入我的actions.js文件中。如何制作一个自包含的jQuery插件,找到最高的图像高度?
当我使用我的变量tallest
设置高度的同一文件中加载时,此方法有效。
var tallest = null;
$('.slideshow img').each(function(index) {
if ($(this).height() >= tallest) {
tallest = $(this).height();
}
});
$('.slideshow').height(tallest);
这个工作,将循环所有的项目,然后将tallest
的值设置为找到的最大高度。然而,以下不工作:
(function($){
$.fn.extend({
tallest: function() {
var tallest = null;
return this.each(function() {
if ($(this).height() >= tallest) {
tallest = $(this).height();
}
});
}
});
})(jQuery);
一旦加载我想:
这将是该插件,从它自己的文件加载(包含使用该零件的actions.js文件之前)使用它如下:
$('.slideshow img').tallest();
$('.slideshow').height(tallest);
但是,上述两行返回'最高是未定义'的错误。我该如何做这项工作?任何想法,将不胜感激。关于这个更加的这个完美的使用思考会是如下:
$('.container').height(tallest('.container item'));
但我甚至不知道从哪里开始得到这个在你传递对象的方式工作,要测量到函数将其添加到函数名称的括号中。
感谢您的阅读,
Jannis
谢谢,这个伟大的工程,我已经学到了很多关于如何建立这些类型的东西!我无法解释的一行是'var $ this = $(this)'这是为了什么目的?另外:为什么你使用'var $ var_name = ...'not'var var_name = ...'它有什么区别?再次感谢。 – Jannis 2010-04-05 08:06:37
我编辑了我的答案来解释这些事情。 :) – 2010-04-05 08:21:05
真棒,感谢您的详细解释。真的很感激它! – Jannis 2010-04-05 09:06:51