JqueryMobile - как мне запустить функцию только на одной HTML-странице? - PullRequest
1 голос
/ 27 марта 2012

Я создаю новое приложение, используя jqm. весь javascript размещен в index.html, на другой странице (cat.html) я использую бесконечную прокрутку для отображения постов в категории, при прокрутке после 15 постов загружается более 15 и более 15 .... после посещения страницы cat.html и выполнения функции функции продолжают работать на всех других страницах (только после посещения страницы cat.html).

это код исполнения:

как мне сказать другим страницам не использовать этот код?

$('#SaloonaMobileCatPage').live('pageshow', function(event) 
{

$(window).bind('scrollstop', function(){

if ($(this).scrollTop() + $(this).height() >= ($(document).height() - 100)){

$.mobile.showPageLoadingMsg();
var id = getUrlVars()["catid"];
sf = sf + 15;


$.ajax({
type: "GET",
cache: false,
url: "http://saloona.co.il/mobile/mobile_xml/read_cats_xml.php?cat_id=" + id +       "&start_from=" + sf,
dataType: "xml",
success: parseXmlCatsMore
});

}
});    

1 Ответ

2 голосов
/ 27 марта 2012

Когда событие pageshow запускается для страницы cat, вы можете связать обработчик события scrollstop, а когда событие pagehide запускается для страницы cat, вы можете отсоединить обработчик события scrollstop:

$(document).delegate('#SaloonaMobileCatPage', 'pageshow', function(event) {

    $(window).bind('scrollstop.cat-page', function(){

        if ($(this).scrollTop() + $(this).height() >= ($(document).height() - 100)){

            $.mobile.showPageLoadingMsg();
            var id = getUrlVars()["catid"];
            sf = sf + 15;

            $.ajax({
                type     : "GET",
                cache    : false,
                url      : "http://saloona.co.il/mobile/mobile_xml/read_cats_xml.php?cat_id=" + id + "&start_from=" + sf,
                dataType : "xml",
                success  : parseXmlCatsMore
            });
        }
    });
}).delegate('#SaloonaMobileCatPage', 'pagehide', function () {
    $(window).unbind('scrollstop.cat-page');
});

Обратите внимание, как я добавил пространство имен к типам событий, чтобы я мог добавлять / удалять только те обработчики событий, которые я хочу удалить.

Другой подход заключается в добавлении if/then оператор для обработчика событий scrollstop, который проверяет, является ли текущая страница страницей cat:

$(document).delegate('#SaloonaMobileCatPage', 'pageshow', function(event) {

    $(window).bind('scrollstop.cat-page', function(){

        if ($.mobile.activePage[0].id == 'SaloonaMobileCatPage' && $(this).scrollTop() + $(this).height() >= ($(document).height() - 100)){

            $.mobile.showPageLoadingMsg();
            var id = getUrlVars()["catid"];
            sf = sf + 15;

            $.ajax({
                type     : "GET",
                cache    : false,
                url      : "http://saloona.co.il/mobile/mobile_xml/read_cats_xml.php?cat_id=" + id + "&start_from=" + sf,
                dataType : "xml",
                success  : parseXmlCatsMore
            });
        }
    });
});

Обратите внимание, как я получаю идентификатор текущей страницы с помощью $.mobile.activePage[0].id и проверяю егос идентификатором страницы cat, чтобы код в операторе if/then запускался только в том случае, если пользователь находится на странице cat.

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