jQuery自定义函数并向其传递参数
我有一行图像,当单击其中一个图像时,它会展开,同时也会缩小可能被放大的任何其他图像。如果你点击放大的图像,它会自动缩小 我收到“未定义收缩”错误消息。提前谢谢jQuery自定义函数并向其传递参数,jquery,Jquery,我有一行图像,当单击其中一个图像时,它会展开,同时也会缩小可能被放大的任何其他图像。如果你点击放大的图像,它会自动缩小 我收到“未定义收缩”错误消息。提前谢谢 $.fn.grow = function(size,rate) { $(this).addClass('click').animate({'height': size}, rate); } $.fn.shrink = function(size,rate) {
$.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');
});
});
我收到了一个不同的例外 未捕获的TypeError:无法调用未定义的方法“grow” 您正试图链接这些方法(如果喜欢Crockfordian术语,也可以使用级联),但两个自定义函数都不会返回jQuery对象
你需要让他们
返回
一些东西,通常是这个
。在jQuery自定义函数中,此
已经是一个jQuery对象,因此无需再次包装它。如果您像这样使用$.fn.extend:
$.fn.extend({
shrink: function() {$(this).doSth()},
grow: function() {$(this).doSth()}
});
您将能够将收缩和增长方法应用于任何jQuery包装的对象,例如
$('img').shrink();
希望有帮助为什么要声明:var$this=$(this);我想说,这会混淆JQuery,因为在变量名中使用$selector。我不能100%确定这是否是允许的,这是否是原因。但是,请尝试使用$(this),或者以不同的方式声明变量。。比如var me=$(这个)@Jules变量的前导
$
在JavaScript中是有效的。事实上,许多人更倾向于将其作为一个指标,表明该变量实际上是一个jQuery对象。+1,尽管对于shrink
方法,我想您应该返回this
,以便链接在原始元素上继续。。。。另外,grow
方法可以执行this.addClass('click')
。不需要像问题中那样包装它。(看在上帝的份上,我知道你知道。);o)