用户单击链接时运行javascript函数

时间:2014-02-12 20:25:06

标签: javascript jquery

我只想在点击链接

时触发这段代码
<a href="#" id="open">OPEN</a>

$( window ).resize(function() {
    resetValue();
    sizeScrollbar();
    reflowContent();
});
//init scrollbar size
setTimeout( sizeScrollbar, 10 );//safari wants a timeout

所以理论上,我想:

if(open button clicked)
{

  $( window ).resize(function() {
    resetValue();
    sizeScrollbar();
    reflowContent();
  });
  //init scrollbar size
  setTimeout( sizeScrollbar, 10 );//safari wants a timeout
}

我知道如何在jquery中执行此操作,但此代码位于页脚中包含的单独的js文件(filename: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

});

但它给了我一个错误:

未捕获的ReferenceError:未定义sizeScrollbar

我认为这是因为当我在main.js文件中调用它时,我试图在scroll.js文件之外调用sizeScrollbar。

1 个答案:

答案 0 :(得分:0)

问题是scroll.js是在一个闭包内声明的($(function(){});)。如果你想要在封闭内部声明的任何东西可用,你必须在封闭的末尾返回一些东西。这意味着您可能希望返回一个包含函数的对象:

// scroll.js
var scroll = (function() {

   // code       

   function sizeScrollbar() {};

   // code

   return {
      'sizeScrollbar' : sizeScrollbar
   }

})();

然后在main.js中你可以这样调用sizeScrollbar:

scroll.sizeScrollbar();