jQuery自定义函数并将参数传递给它们

时间:2011-07-05 23:25:04

标签: jquery

我有一排图像,当点击其中一个图像时,它会展开,同时缩小可能会放大的任何其他图像。如果单击放大的图像,它只会收缩。

我收到'缩小未定义'错误消息。提前谢谢。

        $.fn.grow = function(size,rate) {
            $(this).addClass('click').animate({'height': size}, rate);
        }
        $.fn.shrink = function(size,rate) {
            $('img').removeClass('click').animate({'height': size}, rate);
        }

        $(document).ready(function() {
            $('#gallery img').click(function() {
                var $this = $(this);
                ($this.hasClass('click')) ? $this.shrink('139', '200') : $this.shrink('139', '200').grow('700', '200');
            });
        });

2 个答案:

答案 0 :(得分:2)

我收到了一个不同的例外......

  

未捕获的TypeError:无法调用未定义的方法'grow'

您正在尝试链接方法(如果您喜欢Crockfordian术语,则使用级联),但您的自定义函数都不会返回jQuery对象。

您需要为return提供一些内容,通常是this。在jQuery自定义函数中,this已经是一个jQuery对象,因此不需要再次包装它。

答案 1 :(得分:0)

如果您使用$ .fn.extend:

$.fn.extend({
    shrink: function() {$(this).doSth()},
    grow: function() {$(this).doSth()}
});

您将能够将缩小和增长方法应用于任何jQuery包装对象,例如

$('img').shrink();

希望有所帮助