Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > запустить скрипт после перехода по ссылки jquery


Автор: AGENTxXx 14.8.2012, 13:19
Добрый день! 
Не могу понять логику jquery в данном случае:
У меня есть 2 страницы: index.html и games.html.
На index.html я щелкою по ссылке:
Код

<a href="games.html" data-transition="slide"><img src="./images/1.jpg" alt="" width='100'/></a>


но когда происходит переход на новую страницу, нужная функция не выполняется:
Код

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


если делать так:
Код

<a href="games.html" data-transition="slide" onclick="window.location.href = 'games.html'"><img src="./images/1.jpg" alt="" width='100'/></a>


то все работает, но нет эффекта перехода, а мне он очень нужен.

Подскажите, плизз, какое событие сработает при переходе на новую страницу. Очень буду рад, если прежде чем писать, проверите на работоспособность сами, так как перебрал уже не мало вариантов - все не рабочие.

Автор: Amphiluke 14.8.2012, 15:30
Если вы используете jQuery mobile с переходом по страницам посредством AJAX, то нужно использовать не $(document).ready(), а $(document).bind('pageinit').

Автор: AGENTxXx 14.8.2012, 16:22
Да, использую jquey mobile. Я не совсем понял как это можно использовать.. Я написал так:
Код

$(document).bind("ready", function(){
            update_list_games();
            });


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

<a href="games.html" data-transition="slide" onClick="setTimeout(update_list_games, 1000)"><img src="./images/1.jpg" alt="" width='100'/></a>
 

Все равно не то, что нужно

Автор: Amphiluke 14.8.2012, 18:18
Цитата(AGENTxXx @  14.8.2012,  20:22 Найти цитируемый пост)
 Я не совсем понял как это можно использовать.. 

Так:
Код

$(document).bind("pageinit", function() {
    update_list_games();
});

В http://jquerymobile.com/demos/1.1.1/docs/api/events.html все детально расписано.

Автор: AGENTxXx 14.8.2012, 21:12
Спасибо! Чуть начал разбираться.
Ошибка была в том, что я условие не поставил, когда загружать игры, т.к. на первой странице нет данного id, а только на второй, то видно какой то косяк происходит, и уже после перехода ни чего не происходит. В упрощенном виде это выглядит так:
Код

var nw = false;
$(document).bind("pageinit", function() {
            if (nw)
                update_list_games();
            nw=true;
        });

Логика следующая: при загр. страницы так же происходит событие pageinit, то так как тут еще нам не нужно выводить игры, то просто nw в true, а вот уже при переходе выполнится функция update_list_games();

В таком виде все работает... Но есть одно но....
Если мы напишем так:
Код

var nw = false;
$(document).bind("pageinit", function() {
            $('#spanGo').text('sss');
            if (nw)
                update_list_games();
            nw=true;
        });


И если учесть, что id = spanGo находится на второй только странице, то все нормально сработает.... ПОЧЕМУ????????????? Есть ли у кого то предположения?

В общем, я сломал мозг, и очень рад, что нашел способ, как это можно реализовать.... Если кто логику объяснит, почему одно работает, а другое нет - буду ОЧЕНЬ благодарен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)