Javascript 在jQuery中全局定义函数

Javascript 在jQuery中全局定义函数,javascript,jquery,function,Javascript,Jquery,Function,我有一些简单的jQuery代码,但它有一个问题。菜单处理函数根本不起作用 var clicked = false; $(document).ready(function(){ $TemplateMenu= $('<p class="paragraph">texxt</p>'); $('.TemplateMaker').click(); this.menuhandler(); }); }); function menuhandler(

我有一些简单的jQuery代码,但它有一个问题。菜单处理函数根本不起作用

var clicked = false;
$(document).ready(function(){
    $TemplateMenu= $('<p class="paragraph">texxt</p>');
    $('.TemplateMaker').click();
        this.menuhandler();
    });
});
function menuhandler(){         
    if(clicked == false){
        $(this).after($TemplateMenu);
        clicked = true;
    }
    else{
        $TemplateMenu.remove();
        clicked = false;
}
这个代码有什么问题?如果函数包含jQuery元素,我是否定义了错误的函数,或者我是否需要一些特殊的东西? 谢谢你的帮助:-)

编辑:

我编辑代码以包含你们的建议,它似乎不起作用。 代码:

var=false;
$(文档).ready(函数(){
$TemplateMenu=$('

texxt

texxt

); $('.TemplateMaker')。单击(菜单句柄($(此)); }); 函数menuHandler(obj){ 如果(单击==false){ $(obj).after($TemplateMenu); 单击=真; } 否则{ $TemplateMenu.remove(); 单击=假; }}
现在我注意到jquery抛出了这个“event.returnValue已弃用。请改用标准event.preventDefault()”,但我不知道它与我的脚本的联系如何

$('.TemplateMaker').click();
        this.menuhandler();
    });
尝试替换this.menuhandler()仅使用menuhandler()如下所示:

$('.TemplateMaker').click();
        menuhandler();
    });
编辑:回应您的评论。尝试在原始代码的menuhandler()中使用this而不是$(this)

尝试替换this.menuhandler()仅使用menuhandler()如下所示:

$('.TemplateMaker').click();
        menuhandler();
    });
编辑:回应您的评论。尝试在原始代码的menuhandler()中使用this而不是$(this)

尝试替换this.menuhandler()仅使用menuhandler()如下所示:

$('.TemplateMaker').click();
        menuhandler();
    });
编辑:回应您的评论。尝试在原始代码的menuhandler()中使用this而不是$(this)

尝试替换this.menuhandler()仅使用menuhandler()如下所示:

$('.TemplateMaker').click();
        menuhandler();
    });

编辑:回应您的评论。尝试在原始代码的menuhandler()中使用this而不是$(this)

您可能希望在有人单击按钮时启动menuhandler函数?然后,您只需按如下方式更改代码:

$('.TemplateMaker').click(menuHandler);
编辑: 您基本上有两种选择:

选项1:

您不必传递
$(this)
将代码更改为this(如果选择此方法,请确保删除menuHandler函数中的参数):


你可能想让menuHandler函数在有人点击按钮时启动?然后,您只需按如下方式更改代码:

$('.TemplateMaker').click(menuHandler);
编辑: 您基本上有两种选择:

选项1:

您不必传递
$(this)
将代码更改为this(如果选择此方法,请确保删除menuHandler函数中的参数):


你可能想让menuHandler函数在有人点击按钮时启动?然后,您只需按如下方式更改代码:

$('.TemplateMaker').click(menuHandler);
编辑: 您基本上有两种选择:

选项1:

您不必传递
$(this)
将代码更改为this(如果选择此方法,请确保删除menuHandler函数中的参数):


你可能想让menuHandler函数在有人点击按钮时启动?然后,您只需按如下方式更改代码:

$('.TemplateMaker').click(menuHandler);
编辑: 您基本上有两种选择:

选项1:

您不必传递
$(this)
将代码更改为this(如果选择此方法,请确保删除menuHandler函数中的参数):



是什么让你认为你的普通函数可以链接到一个本地DOM元素?用
menuhandler()
调用它,而不是
this.menuhandler()
。那么它怎么知道$(this)是什么呢?你可以做
menuhandler($(this))
函数menuhandler(引用的元素){}
是什么让你认为你的普通直函数可以链接到本地DOM元素?使用
menuhandler()
调用它,而不是
this.menuhandler()
。那么它如何知道$(this)是什么呢?你可以做
menuhandler($(this))
函数menuhandler(引用的元素){}
是什么让你认为你的普通直函数可以链接到本地DOM元素?使用
menuhandler()
调用它,而不是
this.menuhandler()
。那么它如何知道$(this)是什么呢?你可以做
menuhandler($(this))
函数menuhandler(引用的元素){}
是什么让你认为你的普通直函数可以链接到本地DOM元素?使用
menuhandler()
调用它,而不是
this.menuhandler()
。那么它如何知道$(this)是什么呢?你可以做
menuhandler($(this))
函数menuhandler(引用的元素){}
它不工作。我不确定它是否会工作,因为我认为它不再知道$this是什么。请尝试在原始代码的menuhandler()中使用this而不是$(this)。这不会解决他的问题。他希望有人单击
$('.TemplateMaker')
时调用
menuhandler
。他有两个选项,他可以将
$(this)
引用作为参数调用传递给函数,或者直接在
单击
处理程序中调用函数。这不起作用。我不确定它是否会工作,因为我认为它不再知道$this是什么。请尝试在原始代码的menuhandler()中使用this而不是$(this)。这不会解决他的问题。他希望有人单击
$('.TemplateMaker')
时调用
menuhandler
。他有两个选项,他可以将
$(this)
引用作为参数传递给函数