2011-05-10 44 views
0

當我使用jquery的​​函數加載下一頁的主體時,它不檢索該頁的主體的類。有沒有辦法做到這一點?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); 
    } 
}); 
+0

需要更多關於你在做什麼的背景。你在綁定一個加載事件處理程序到什麼地方?從哪裏加載任何頁面的主體在哪裏?如果您可以發佈有用的相關HTML和JavaScript。 – Chad 2011-05-10 20:39:20

+0

你的意思是類似'.load()。find('body')。attr('class')'? – MacMac 2011-05-10 20:43:46

+0

嗨!請提供一些代碼,因爲你的問題非常模糊! – 2011-05-10 20:43:23

回答

1

讓你把一個身體體內?不確定會如預期的那樣工作!

一些html會有幫助,但我猜這就是問題所在。

在您正在加載到您身體的頁面中,將它們放入div而不是body標籤。應該避免身體內部的身體問題。


編輯:

你可以做的是做一個普通的Ajax調用,讓您的新的HTML。然後刪除你的當前正文,並將你從ajax調用返回的東西附加到你的html中。我從來沒有嘗試過這樣的事情,但如果你不能改變你回來的HTML,那可能是最好的嘗試。

+0

我不能,它是現有的html:p。不是我的。 – cmplieger 2011-05-10 20:54:38

+0

ooooh,嗯。看我的編輯 – Patricia 2011-05-11 13:13:50

+0

編輯作品很好:) – cmplieger 2011-05-11 16:23:40

1

你可以嘗試使用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)

+0

不起作用,因爲身體被取代(所以它後來消失了) – cmplieger 2011-05-11 16:04:16

0

我發現一個非常簡單的解決方案來獲得ajax響應的body元素。我們的想法是:

  1. 打開響應的BODY標籤爲DIV
  2. 總結與身體

    $.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 
        }); 
    

它可以在Chrome的DIV,所以我相信在作品其他瀏覽器也是如此。