Только выполните эффекты/операции jQuery на определенных страницах

Вплоть до сих пор я отбрасывал весь свой код jQuery прямо в функции document.ready. Я думаю, что для определенных ситуаций это не лучший способ пойти.

например: Если я хочу, чтобы анимация работала, когда определенная страница загружает то, что является лучшим способом пойти об этом.

$(document).ready(function() {
    $("#element_1").fadeIn();
    $("#element_2").delay('100').fadeIn();
    $("#element_3").delay('200').fadeIn();
});

Если это - прямо в document.ready затем каждый раз КАКИЕ-ЛИБО загрузки страницы, он собирается проверить каждую строку и искать тот элемент. Что лучший способ состоит в том, чтобы сказать jQuery только выполнять блок кода на определенной странице для предотвращения этой проблемы.

7
задан Galen 30 April 2010 в 16:02
поделиться

2 ответа

путем проверки наличия элемента на странице перед выполнением анимации

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

10
ответ дан 7 December 2019 в 01:18
поделиться

Включайте только тот код, который хотите, чтобы выполнялся, когда модель 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
});
0
ответ дан 7 December 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: