Есть ли способ определить функцию навсегда в jQuery? - PullRequest
3 голосов
/ 28 января 2012

Я работаю над сайтом, который передает информацию на мой сервер, который возвращает страницу, однако мне приходится переопределять прослушиватель кликов каждый раз, когда я перезагружаю страницу, потому что jQuery контролирует все мои клики на каждой странице, поэтому я ' Интересно, есть ли способ навсегда определить функцию?

JQuery код:

$(function(){
    $('.lvl1Links').on('click',function(event) {
        event.preventDefault();
        $('pload').html('<img src="source/image/lbl.gif">');
        var page = $(this).attr('id');
        var huh = $('input:hidden').val();
        var data = 'pop='+huh+'&page='+page;
        $.post('source/php/bots/authorize.php',data,function(data){
                $('#pager_master_div').html(data).slideDown();
                $('pload').html('');
            });
    });
});

Ответы [ 2 ]

1 голос
/ 28 января 2012

jQuery (и весь Javascript) работает на стороне клиента, где постоянство недоступно.Есть два способа достичь желаемого постоянства.

  1. Напишите jQuery плагин и включите его в свою страницу.

  2. Напишите свой обработчик кликов один раз и используйте свой код на стороне сервера / язык сценариев, чтобы включить его в каждую HTML-страницу.Пример включаемого PHP: здесь .

Это хорошее время для рассмотрения шаблонов HTML - документов, содержащих стандартные HTML (верхний колонтитул, нижний колонтитул, навигация и т. Д.), Которые должны быть включены на каждую страницу вашего сайта.1017 *

1 голос
/ 28 января 2012

Будучи платформой без сохранения состояния, каждый раз, когда загружается страница, вам нужно перепривязывать подобные вещи.Вот шаблон, который я использую, чтобы упростить его:

Если это часто встречается в области вашего сайта, поместите этот тип материала в функцию init в общем файле.например,

global.js:

function InitSalesPageOrWhatever(){
  $(function(){ foo; });
  OtherStuffThatRunsOnEverySalesPageLoad();
}

Затем в блоке скрипта на ваших страницах, например, SalesPage:

InitSalesPageOrWhatever();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...