2010-12-03 2 views
0

У меня есть один файл site.js который имеетASP.NET Мастер страницы и JQuery

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

и соответствующий MasterPage:

<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> 

... казнить бы вашу showGallery() функцию, когда DOM готова. Кроме того, до тех пор, пока он появляется после вашего предыдущего кода, он обязательно запустится после него. ready обработчики будут выполняться по порядку (если не вызвано через .bind("ready"...), которое отличается от того, что происходит после, но все же в порядке).

+0

+1 для того, чтобы быть сложным, и для краткого кода. это, очевидно, функциональный эквивалент того, что я написал (минус один слой бессмысленной инкапсуляции), но все же я никогда не думал писать так. аккуратный :) –

1

Вы можете определить несколько функций, которые должны выполняться в DOMReady. Я бы просто добавить следующее в gallery.js (или там, где showGallery может быть определен)

$(function() { 
    showGallery(); 
}); 
Смежные вопросы