当用户单击链接时运行javascript函数
我只想在点击链接时触发这段代码当用户单击链接时运行javascript函数,javascript,jquery,Javascript,Jquery,我只想在点击链接时触发这段代码 <a href="#" id="open">OPEN</a> $( window ).resize(function() { resetValue(); sizeScrollbar(); reflowContent(); }); //init scrollbar size setTimeout( sizeScrollbar, 10 );//safari wants a timeout 我知道如何在jquery中实
<a href="#" id="open">OPEN</a>
$( window ).resize(function() {
resetValue();
sizeScrollbar();
reflowContent();
});
//init scrollbar size
setTimeout( sizeScrollbar, 10 );//safari wants a timeout
我知道如何在jquery中实现这一点,但这段代码位于一个单独的js文件名:scroll.js中,我将其包含在页脚中
我试着发表评论
$( window ).resize(function() {
resetValue();
sizeScrollbar();
reflowContent();
});
//init scrollbar size
setTimeout( sizeScrollbar, 10 );//safari wants a timeout
然后在我的main.js文件中启动它,如下所示:
$(".open").click(function() {
$( window ).resize(function() {
resetValue();
sizeScrollbar();
reflowContent();
});
//init scrollbar size
setTimeout( sizeScrollbar, 10 );//safari wants a timeout
});
但这给了我一个错误:
未捕获引用错误:未定义sizeScrollbar
我假设这是因为在main.js文件中调用scroll.js文件时,我试图在scroll.js文件外部调用sizeScrollbar。问题在于,scroll.js是在闭包$function{}中声明的。如果希望在闭包中声明的内容可用,则必须在闭包末尾返回一些内容。这意味着您可能希望返回一个包含函数的对象:
// scroll.js
var scroll = (function() {
// code
function sizeScrollbar() {};
// code
return {
'sizeScrollbar' : sizeScrollbar
}
})();
然后在main.js中,您可以像这样调用sizeScrollbar:
scroll.sizeScrollbar();
按什么顺序包含这两个JS文件?添加一个代码,在其中定义sizeScrollbarfunction@Trojanscroll.js然后main.js、jquery和jquery ui文件位于scroll和main上方。您可以使用单击函数中的sizeScrollbar作为回调函数。因此,每次单击时,您都会不断将侦听器重新绑定到窗口的调整大小事件。。。我相信你不会真的想那样做。您是否希望在单击时设置一个标志,然后让您的调整大小处理程序在触发其方法之前检查标志?这应该在main.js或scroll.js文件中?如果您希望在main.js中有可用的内容,则返回必须发生在scroll.js的末尾。此代码是bloken,据我所知,它将分配给该函数首次运行的全局范围结果//将函数调用更改为函数名称或使用我的答案@straker,返回{'sizeScrllbar':sizeScrollbar}将调用函数一次,并将结果作为变量分配给sizeScrllbar,而不是函数
scroll.sizeScrollbar();