jQueryMobile - условно разрешить хеш, если «страница» существует? - PullRequest
3 голосов
/ 30 ноября 2011

Я видел много связанных вопросов, но ни один из них напрямую не касался этой проблемы ...

У меня очень большой сайт, для которого я создаю мобильную тему jquery. Хотя я не контролирую контент, и когда он создавался для настольных компьютеров, для перемещения по позициям на странице использовалось много тегов #anchor.

Я исправил это для ссылок на той же странице со следующим (jqm является заменой для объекта jquery, мне нужно очистить ссылки $ / jqm ...

Это связано с событием mobileinit и работает, если на странице есть якоря:

jqm('div').live('pagebeforecreate', function(e, data)
{   
    if(location.hash.length>0){
        if($(location.hash).length>0){
            if ($(location.hash).attr("data-role") != "page")
            {
                    $.scrollTo(location.hash, 800);
            };
        }
    }
    //Check to see if there are any internal links on page
    $("a[href*='#']").each(function()
    { 
    //make sure they aren't legit jqm pages
        if($(this.hash).length){
            if ($(this.hash).attr("data-role") != "page")
            {
                //Disable jqm behavior, instead scroll down the page
                $(this).click(function(event)
                {
                    event.preventDefault(); 
                    $.scrollTo(this.hash, 800);
                    return false;
                });
            };
        }
        else {
            $(this).attr('data-ajax','false');
        }
    });
});
});

Так что, если пользователь находится на foo.php и есть ссылка на #bar и #baz, он будет приятно прокручивать их, зная, что они не являются data-role = "page"

Но если пользователь находится на foo.php и на этой странице есть ссылка на qux.php # bar, он задыхается, потому что когда страница загружается, он пытается перейти на changePage к #bar, но #bar на qux. php на самом деле просто id для обычного старого div.

Мне кажется, что что-то вроде вышеупомянутого решения на странице также будет работать для этого, но, возможно, мне нужно было бы привязаться к фактической загрузке страницы, а не к странице до создания?

...