Вплоть до сих пор я отбрасывал весь свой код jQuery прямо в функции document.ready. Я думаю, что для определенных ситуаций это не лучший способ пойти.
например: Если я хочу, чтобы анимация работала, когда определенная страница загружает то, что является лучшим способом пойти об этом.
$(document).ready(function() {
$("#element_1").fadeIn();
$("#element_2").delay('100').fadeIn();
$("#element_3").delay('200').fadeIn();
});
Если это - прямо в document.ready затем каждый раз КАКИЕ-ЛИБО загрузки страницы, он собирается проверить каждую строку и искать тот элемент. Что лучший способ состоит в том, чтобы сказать jQuery только выполнять блок кода на определенной странице для предотвращения этой проблемы.
путем проверки наличия элемента на странице перед выполнением анимации
if ($("#element-1").length) {
$("#element-1").fadeIn();
}
и так далее с другими элементами # element_2
и # element_3
в @numediaweb:
текущая реализация jQuery is ()
, как показано ниже
is: function( selector ) {
return !!selector && jQuery.filter( selector, this ).length > 0;
},
, поэтому , может быть разумнее использовать is ()
, но быстрее использовать только length
и еще быстрее подать в суд document.getElementById (). length
Включайте только тот код, который хотите, чтобы выполнялся, когда модель DOM готова для этой конкретной страницы. $ (document) .ready (...
не означает, что на каждой странице должен выполняться один и тот же фрагмент кода. Это потребует выполнения различных проверок, чтобы знать, что нужно выполнить.
Я уверен, что у вас будут некоторые общие функции, которые вы хотели бы выполнять на каждой странице, а также некоторые функции, специфичные для каждой страницы. В этом случае вы можете объединить общие функции в одну функцию, и вызовите его из $ (document) .ready (...
, чтобы единственный оставшийся код был специфичным для этой конкретной страницы. Например:
function common() {
alert('hello');
}
$(document).ready(function() {
common();
// do some page-specific stuff
});
Я не согласен с выполнением различных проверок на каждой отдельной странице поэтому код знает, где мы находимся. Это кажется громоздким, и его можно полностью избежать, например:
function doAnimation() {
$("#element_1").fadeIn();
$("#element_2").delay('100').fadeIn();
$("#element_3").delay('200').fadeIn();
}
$(document).ready(function() {
if(window.location.href == 'http://example.com/foo') {
doAnimation();
}
if(this page has blah) {
doBlah();
}
});
В идеале, это должно быть:
$(document).ready(function() {
// do stuff for foo.php
});