Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的;插件";只执行一次?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么我的;插件";只执行一次?

Javascript 为什么我的;插件";只执行一次?,javascript,jquery,Javascript,Jquery,这是我第一次尝试编写jQuery插件,这个插件应该淡出主体,切换类,然后使主体重新出现,让用户切换回类。不幸的是,在这一点上,它不能多次切换类。如何修复它 (function($) { $.fn.flashClass= function(classId, element){ element="body"; //overriden for testing purpose $(this).click(function() {

这是我第一次尝试编写jQuery插件,这个插件应该淡出主体,切换类,然后使主体重新出现,让用户切换回类。不幸的是,在这一点上,它不能多次切换类。如何修复它

(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
已经是页面上的一个元素;事实上,如果您只有jQuery
this
,那么无论如何都不能使用冒泡事件API,因为您不必使用选择器。