可能是另一个愚蠢的问题,但我认为这就是你的做法......
我有一个功能,包括使元素可见,然后将其动画到舞台上。我想将这个应用到一个以'.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'。第二种方式我只是在控制台中得到“这就是:[对象窗口]”
很确定我正在制作一个新手错误,所以所有的帮助将不胜感激。
答案 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');