我浏览了这个网站,寻找帮助解决这个问题的线索,但它们并不具体,无法帮助解决这个问题。
我有这个登录代码,它有一个嵌套函数,我需要从登录脚本范围之外的另一个函数调用。
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();
}
});
我需要从其他地方调用此部分:
e.click(function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();}
基于该网站的研究;我尝试通过构造以下行直接调用它,但它不起作用:
jstore.plugins.login.updated().e.click();
我对jQuery几乎没有实际知识。记住我是新手;从语法上讲,从父函数范围之外的位置调用嵌套javascript函数的正确方法是什么?
问候。
::::::::::::: UPDATE ::::::::::::::
我能够让这个工作起来,非常感谢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);
}
我只需要使用window.onClick = ...
全局化onClick函数,以便从另一个函数调用它。
答案 0 :(得分:1)
为什么不把这个块放到它自己的函数中,比如
var onClick = function() {
var server = jstore.getServer(url);
if(server && server.loggedIn()) {
server.logout();
}
}
然后你就可以这样传递它:
e.click(onClick)
您可以通过简单地调用onClick()