2010-11-23 15 views
0

Ich ziehe Daten von einem Abschnitt einer Seite in eine andere, um ein Menü zu erstellen. Ich muss die Daten in ein verstecktes Element oder eine Variable ziehen, da ich gerade ein doppeltes Menü erhalte. Meine dynamische Ausfliege und die statische <ul><li> ist. Das Menü besteht aus diesen. HierJQuery .load() in Variable oder verstecktes Element

ist das, was ich bisher:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('div.ms-quickLaunch').replaceWith('<div id="hierarchy" style="border:solid 1px white; width:0px; visibility:hidden"></div>'); 
    }); 

$(function(){ 
      $('#hierarchy').load('http://wwcshare/icenter/Pages/wwcMenuContent.aspx #menuContent', 
       function(){ 
        $(this).menu({ 
         autoShow: true, 
         content: $(this).html(), 
         backLink: false, 
         crumbDefaultText: ' ' 
        }); 
       });   
      }); 
</script> 

Dies funktioniert, außer dass mein Menü nicht mehr platziert zu werden, wo es hingehört. Es ist oben auf der Seite statt in der Seite #hierarchy div.


Hier ist meine WECHSELN VERSUCH basiert auf einem von der Antwort des:

$(function(){  
      $.get('http://wwcshare/icenter/Pages/wwcMenuContent.aspx', function(data){ // grab content from another page 
       contentIwant = data.find("#menuContent"); 
       $('#hierarchy').menu({ 
        autoShow: true, 
        content: contentIwant, 
        backLink: false, 
        crumbDefaultText: ' ' 
       }); 
      }); 
     }); 

Antwort

5

ein $ .get() würde Ihre Zwecke besser passen als ein $ .load()

$ .get() verwenden, können Sie die Daten verarbeiten, bevor es in die Seite geladen

+0

Außer dass ein '$ .get()' kann nicht einen bestimmten Teil einer Website erhalten, richtig? –

+0

nicht automatisch, aber das ist eine kleine Hürde. 'data.find (" # element ")' – generalhenry

+0

sie sind beide Shortcuts für $ .ajax, $ .load geht nur einen Schritt über das, was Sie wollen imho, besser einen Schritt zu stoppen und manuell den letzten Schritt gehen. Das manuelle Rückgängigmachen eines Schrittes ist schwieriger. – generalhenry

3

Es spielt keine Rolle, ob das Element, das Sie in laden versteckt ist oder nicht. Wenn es im DOM existiert, können Sie es laden.

Entweder stellen Sie sicher das Element über CSS erste versteckt ist:

#element{display:none;} 

oder

das Element mit jQuery ausblenden, wenn Sie den Inhalt in sie laden:

$('#holder').hide().load('mypage.php'); 

this helps du Mann!

W.