Javascript 为什么我的;插件";只执行一次?
这是我第一次尝试编写jQuery插件,这个插件应该淡出主体,切换类,然后使主体重新出现,让用户切换回类。不幸的是,在这一点上,它不能多次切换类。如何修复它Javascript 为什么我的;插件";只执行一次?,javascript,jquery,Javascript,Jquery,这是我第一次尝试编写jQuery插件,这个插件应该淡出主体,切换类,然后使主体重新出现,让用户切换回类。不幸的是,在这一点上,它不能多次切换类。如何修复它 (function($) { $.fn.flashClass= function(classId, element){ element="body"; //overriden for testing purpose $(this).click(function() {
(function($) {
$.fn.flashClass= function(classId, element){
element="body"; //overriden for testing purpose
$(this).click(function() {
$(element).fadeOut("slow", function() {
$(element).toggleClass(classId);
});
$(element).fadeIn("slow", function() {
$(element).scrollTop(height);
});
});
};
})(jQuery);
编辑:
最后,我发现我用未定义变量高度的scrollTop回调粘贴了错误的代码段。将其移除并切换到。单击
至。打开
,该功能就像一个符咒。但是我仍然感兴趣的是为什么它只工作一次。尝试live()或on(),如下所示:
$(this).on('click',function() {...
而不是
$(this).click(function() {...
是什么让你认为它“不能多次切换类?”第二次调用它时会发生什么?如果你用
body
覆盖它,为什么会得到元素参数?你在哪里更改类?!它工作了一次,因为当丢失的高度导致错误时,所有的fadein/out代码都已运行。一旦出现错误,将不再执行任何javascript代码。live()
已被弃用。使用delegate()
或on()
instead@Pointy$(这个)。点击(function(){
..?@rorymcrossan委托
也被弃用了,好吧。@Johan还没有弃用,因为这是在@rorymcrossan中将事件附加到动态元素的最佳方法哦,对了……我需要清理眼镜:-)然而,在这种情况下,我怀疑这是问题所在,因为this
已经是页面上的一个元素;事实上,如果您只有jQuerythis
,那么无论如何都不能使用冒泡事件API,因为您不必使用选择器。