Jquery load (): класс тела не получен - PullRequest
0 голосов
/ 11 мая 2011

Когда я использую функцию jquery .load() для загрузки тела следующих страниц, она не получает класс тела этой страницы. Есть ли способ добиться этого?

Спасибо:)

Вот код:

$(document).ready(function () {
    if(navigator.standalone){
        $('a').live("click", function (e) {
            var link = $(this).attr('href');
            if ($(this).hasClass('noeffect')){
            }
        else {
            e.preventDefault();
            $("body").load(link);
            };
        });
    }
    else {
        window.scrollTo(0, 0.9);
    }
});

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Вы можете попробовать использовать replaceWith :

$(document).ready(function () {
    if(navigator.standalone){
        $('a').live("click", function (e) {
            var link = $(this).attr('href');
            if ($(this).hasClass('noeffect')){}
            else {
                e.preventDefault();
                $.get(link, null, function(result) {
                     $("body").replaceWith(result);
                });                    
            });
        }
    else {window.scrollTo(0, 0.9);}
});

Это предполагает, что ответ содержит только тело и его содержимое.Если он включает HTML, вы можете захотеть $("html").replaceWith(result)

1 голос
/ 11 мая 2011

так вы помещаете тело внутрь тела? не уверен, что это сработает, как ожидалось!

некоторые html были бы полезны, но я думаю, в этом и заключается проблема.

на страницах, которые вы загружаете в свое тело, поместите их в тег div вместо тега body. это должно избежать тела внутри проблемы тела.


Edit:

что вы можете сделать, это сделать обычный вызов ajax, чтобы получить ваш новый html. затем удалите ваше текущее тело и добавьте материал, который вы получили от вызова ajax, к вашему html. Я никогда не пробовал что-то подобное, но если вы не можете изменить html, который вы получаете, это, вероятно, лучшая попытка.

0 голосов
/ 20 января 2013

Я нашел довольно простое решение, чтобы получить элемент body ответа ajax. Идея такова:

  1. Превратить тег ответа тела в DIV
  2. Оберните DIV ТЕЛО

    $.get(url)
      .success(function(data, textStatus, jqXHR){
        var data = data.replace('<body', '<body><div id="body"').replace('</body>', '</div></body>');
        var body = $(data).filter('#body');
        // feel free the get HTML, class, attributes, etc. of ajax response BODY
      });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...