在Jquery中按类应用自定义函数

时间:2015-06-01 14:40:16

标签: javascript jquery html css function

可能是另一个愚蠢的问题,但我认为这就是你的做法......

我有一个功能,包括使元素可见,然后将其动画到舞台上。我想将这个应用到一个以'.start'类开头的元素,然后再应用于整个项目中的其他元素。

function showthis() {
    $(this).show().css({ "display": "block" }).animate({ "top": "40px" }, "fast");
    console.log('THIS IS: ' + this);
};

$('.start').showthis();

OR

showthis('.start');

如果我使用第一种方式,我会收到一条错误,上面写着'showthis is a function'。第二种方式我只是在控制台中得到“这就是:[对象窗口]”

很确定我正在制作一个新手错误,所以所有的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试像

一样扩展
p1

然后你应该可以像(function($){ $.fn.showthis = function() { this.show().animate({ "top": "40px" }, "fast"); return this;//for method chaining - $('.start').showthis().append()... }; }(jQuery)); 那样打电话注意,上面不需要$('.start').showthis();,因为$(this)showthis的同一个对象的一部分,所以{{ 1}}本身就足够了。

请参阅How to Create a Basic Plugin

如果你不想扩展,那么你必须通过使用传入的选择器或传入jQuery对象来修复showthis

show()

然后调用this

P.S:注意,function showthis(selector) { $(selector).show().animate({ "top": "40px" }, "fast"); }; 已删除,因为它与showthis('.start');

相同

答案 1 :(得分:0)

function showthis(obj) {

     $(obj).show().css({ "display" : "block" } ).animate({ "top": "40px" }, "fast");
     console.log('THIS IS: '+ obj);

};

 showthis('.start');