2014-02-12 90 views
1

我只希望这段代码时,点击运行JavaScript当用户点击链接

<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文件中(文件名: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是没有定义

我认为这是因为我想调用sizeScrollbar当我在main.js文件中调用scroll.js文件之外。

+1

在什么样的顺序,你包括两个JS文件? – Trojan

+1

添加一个代码,在这里你定义sizeScrollbar函数 – msangel

+0

@Trojan scroll.js然后main.js,jquery和jquery ui文件都在scroll和main之上。 – Brad

回答

0

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

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

    // code  

    function sizeScrollbar() {}; 

    // code 

    return { 
     'sizeScrollbar' : sizeScrollbar 
    } 

})(); 

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

scroll.sizeScrollbar(); 
+0

这应该在main.js或scroll.js文件中? – Brad

+0

如果你想在main中有一些可用的东西,那么返回必须在scroll.js结尾处发生。js –

+0

这段代码被压缩了,它会分配给全局范围这个函数的第一次运行的结果(据我所知) – msangel