2011-10-01 65 views
0

我正在加載使用加載和片段的少數選擇列表的選項。jQuery加載片段一次用於幾個目的

這是我有:

$(document).ready(function(){ 
     $("#select1").load("ts.xml #select1", 
       function (responseText, textStatus, XMLHttpRequest) { 
        if (textStatus == "success") { 
         alert("Loaded select 1"); 

        } 

     $("#select2").load("ts.xml #select2", 
       function (responseText, textStatus, XMLHttpRequest) { 
        if (textStatus == "success") { 
         alert("Loaded select 2"); 

        }  
    }); 

而且我的HTML看起來像這樣:

<li id="select1" class="left"></li> 
<li id="select2" class="left"></li> 

其中ts.xml看起來是這樣的:

<select id="select1"> 
<option>Lorem</option> 
<option>Ipsum</option> 
<option>Lorem Ipsum</option> 
</select> 
<select id="select2"> 
<option>Lorem</option> 
<option>Ipsum</option> 
<option>Lorem Ipsum</option> 
</select> 

如何加載ts.xml一次並繼續檢索碎片離開它?請注意,每次我檢索一個片段時,我都希望在ts.xml加載時不提示成功。

非常感謝

回答

1

一次加載,緩存,然後使用緩存的版本:

$(document).ready(function(){ 
    var response; 
    $("#select1").load("ts.xml #select1", 
     function (responseText, textStatus, XMLHttpRequest) { 
      if (textStatus == "success") { 
       response = responseText; // this will be your xml response 
       // now you can use 'response' anywhere inside the doc.ready function 
      } 
     });  
}); 
+0

你能告訴我怎麼回憶select2與'響應'作爲xml緩存?我瞭解它的概念,但我不知道如何製作它,因此我問了這個問題。非常感謝 – jQuerybeast

+0

@ adeneo的答案將是實現這一目標的方法。如果您將'response'轉換爲jQuery對象(response = $(responseText)),那麼您可以使用jQuery方法來解析它。所以,當你需要填充#select2時,你只需抓住'response'變量並對其進行處理。 – swatkins

0

我想我可能會回到基本的$就功能做這樣的事情。

var xmlData; 

function getXML() { 
    $.ajax({ 
    type: "GET", 
    url: "ts.xml", 
    dataType: "xml", 
    error: function() { 
    $("#mydiv").append("<p>File Not Found!</p><br />"); 
    }, 
    success: function(xml){ 
     xmlData = $(xml); 
    } 
}); 

現在你可以在任何地方搜索數據,至少我是這麼認爲的,沒有測試過,但看不出爲什麼不呢?

var Searchvalue = "Lorem"; 

xmlData.find("select1").find("option:contains('" + Searchvalue + "')").each(function(){ 
     // do something 
     });