Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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,我只想在点击链接时触发这段代码 <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();