2013-08-07 212 views
2

我需要點擊一個列表項來替換div中的文本和xml文件中節點的文本。replaceWith第二次不工作

我點擊一個列表項並將結果存儲在一個變量中。然後加載xml,找到我需要的節點的標題,並對結果進行變量。然後我運行一個if語句,如果兩個變量相等,則將xml放入div中。

我第一次點擊一個列表項時,這是有效的。列表中正確的項目與xml中的正確節點相匹配,正確的文本放置在div中。

但是,當我然後點擊不同的列表項時,文本不會被替換。警報顯示第二次點擊獲得了正確的信息,但最終,div內容未被替換。

演示在這裏:http://mwebphoto.com/mwebphoto/html/3rdJqueryPage.html

代碼在這裏:

<body> 

<div class="slideshowContainer"> 
<div id="slideshow"></div> 
</div> 

<ul id="gallery_id"> 
    <li id="newYork">New York</li> 
    <li id="disconnection">Disconnexion</li> 
    <li id="jackAtSea">Jack at Sea</li> 
</ul> 

<script> 

    $(document).ready(function(){ 

    $("#gallery_id li").on('click', function(e) { 

    var htmlTitle = (this.id); 

$.ajax({ 
    type: "GET", 
    url: "/mwebphoto/xml/albums.xml", 
    dataType: "xml", 
    success: function(xml) { 
     $(xml).find('photoAlbum').each(function(){ 
      var xmlAlbum= $(this); 
      var xmlTitle = $(this).find('title').text(); 
      var xmlEmbedCode = $(this).find('embedCode').text(); 
       alert ('this is html titled ' + htmlTitle); 
       alert ('this is xml titled ' + xmlTitle); 
      if(xmlTitle=htmlTitle) 

      alert ('this is matched xml title' + xmlTitle); 

     $("#slideshow").replaceWith(xmlTitle); 

     }); 
    } 
}); 
}); 

}); 

    </script> 
</body> 

幫助表示讚賞。我不會輕易問。我花了很多時間在這方面進行研究,並以我能想到的方式進行研究。圖我錯過了很簡單的東西,但找不到它。

+1

does xmlTitle包含一個幻燈片ID的元素?如果沒有,那麼這就是爲什麼它不能第二次工作。 #slideshow不存在。很可能你真正需要的是.html而不是replaceWith。 –

+0

if(xmlTitle = htmlTitle)看起來不正確。你的意思是if(xmlTitle == htmlTitle)? –

回答

4

執行第一次後,$("#slideshow")不再存在,因爲您正在用替換整個div與XML中的id。

你需要的是text()

$("#slideshow").text(xmlTitle); 

html()如果您打算添加HTML:

$("#slideshow").html(xmlTitle); 
0

我覺得這是你的問題:

if(xmlTitle=htmlTitle)

嘗試將其更改爲

if(xmlTitle==htmlTitle)

而且,與htmltext更換replaceWith將是一個不錯的主意。