Javascript 如何从jQuery中的另一个函数调用嵌套函数?
我浏览了这个网站,寻找帮助解决这个问题的线索,但这些线索不够具体,无法帮助解决这个问题 我有这个登录代码,它有一个嵌套函数,我需要从登录脚本范围之外的另一个函数调用该函数Javascript 如何从jQuery中的另一个函数调用嵌套函数?,javascript,jquery,Javascript,Jquery,我浏览了这个网站,寻找帮助解决这个问题的线索,但这些线索不够具体,无法帮助解决这个问题 我有这个登录代码,它有一个嵌套函数,我需要从登录脚本范围之外的另一个函数调用该函数 jstore.plugins.login = function(url, options) { var login = jstore.plugins.login; var opts = $.extend(true, {}, jstore.plugins.login.defaults, options);
jstore.plugins.login = function(url, options) {
var login = jstore.plugins.login;
var opts = $.extend(true, {}, jstore.plugins.login.defaults, options);
var server = jstore.url2server({ url: url });
return this.each(function() {
var $this = $(this);
var id = jstore.uid();
$this.append('<div class=\'jstore_widget jstore_login\' id=\'' + id + '\'></div>');
var updated = function(server) {
var element = document.getElementById(id);
if(element) {
var e = $(element);
var loginDisplayed = $('.jstore_login_name', element).length == 1;
if (server.loggedIn() === false && loginDisplayed) {
return true;
}
e.html(login.getHTML(server, opts));
if(server.loggedIn()) {
e.click(function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();
}
});
基于本网站的研究;我试图通过构造以下行直接调用它,但它不起作用:
jstore.plugins.login.updated().e.click();
我对jQuery几乎没有实际知识。记住我是个新手;从语法上讲,从父函数作用域之外的位置调用嵌套javascript函数的正确方法是什么
问候
:更新:
我能够做到这一点,非常感谢nuway的出色建议和其他人的建设性批评
以下是我的结论:
jstore.plugins.login = function(url, options) {
var login = jstore.plugins.login;
var opts = $.extend(true, {}, jstore.plugins.login.defaults, options);
var server = jstore.url2server({ url: url });
return this.each(function() {
var $this = $(this);
var id = jstore.uid();
$this.append('<div class=\'jstore_widget jstore_login\' id=\'' + id + '\'></div>');
window.onClick = function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();
}
};
var updated = function(server) {
var element = document.getElementById(id);
if(element) {
var e = $(element);
var loginDisplayed = $('.jstore_login_name', element).length == 1;
if (server.loggedIn() === false && loginDisplayed) {
return true;
}
e.html(login.getHTML(server, opts));
if(server.loggedIn()) {
e.click(onClick);
}
jstore.plugins.login=函数(url,选项){
var login=jstore.plugins.login;
var opts=$.extend(true,{},jstore.plugins.login.defaults,options);
var server=jstore.url2server({url:url});
返回此值。每个(函数(){
var$this=$(this);
var id=jstore.uid();
$this.append(“”);
window.onClick=function(){
var server=jstore.getServer(url);
if(server&&server.loggedIn()){
server.logout();
}
};
var updated=功能(服务器){
var元素=document.getElementById(id);
if(元素){
变量e=$(元素);
var loginDisplayed=$('.jstore\u login\u name',element).length==1;
if(server.loggedIn()==false&&loginDisplayed){
返回true;
}
e、 html(login.getHTML(server,opts));
if(server.loggedIn()){
e、 单击(onClick);
}
我只需要使用
window.onClick=…
全局化onClick函数,以便从另一个函数调用它。为什么不将此块放入它自己的函数中,例如
var onClick = function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();
}
}
然后你可以这样传递它:
e.单击(onClick)
您可以通过调用
onClick()从其他地方调用它
我很少看到右大括号。我只粘贴了部分代码。右大括号只是没有显示。是否需要发布整个块?@user3674192你能问一个适当的问题,而不是“告诉我它是如何完成的”吗?当然。从语法上讲,从sc之外的位置调用嵌套javascript函数的正确方式是什么父函数的操作?你应该重新格式化你的代码。如果你想得到帮助,最好让读者更容易理解。谢谢,这似乎是我应该做的,我会尝试一下。是否应该在var updated
中实例化e.click(onClick)
?
var onClick = function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();
}
}