2010-12-03 80 views
0

我有具有ASP.NET母版页和jQuery

$(document).ready(function() { 
    initMenu(); 
}); 

和相应的母版单site.js文件:

<head> 
    <script src="@Url.Content("~/Scripts/jquery-1.4.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/Site.js")" type="text/javascript"></script> 
</head> 

在上面的例子initMenu()要求在所有页面上运行,那么site.js自然会放在主页面中。

但是,有些页面需要一组不同的初始化代码,所以它不会让所有页面都运行以下初始化。

$(document).ready(function() { 
     initMenu(); 
     showGallery(); <-- Problem? 
    }); 

我应该如何架构的JS引用,以便所有页面可以共享一个共同的初始化和其他的页面不?

回答

2

您可以添加其他document.ready事件处理程序需要额外的那些网页,例如这可以在需要的库页设置:

<script type="text/javascript"> 
    $(showGallery); 
</script> 

...在DOM准备就绪时执行您的showGallery()函数。另外,只要它出现在你之前的代码之后,它肯定会在它之后运行。 ready处理程序将按顺序执行(除非通过.bind("ready"...)调用,这是不同的......那些发生后,但仍然是有序的)。

+0

+1为了精心制作,并为简洁的代码。这显然是我写的功能相当于(减去一层无意义的封装),但我从来没有想过要这样写。整洁:) – 2010-12-03 16:58:54

1

您可以定义几个要在DOMReady上执行的函数。我只想补充以下的gallery.js(或其它地方showGallery可能被定义)

$(function() { 
    showGallery(); 
});