2013-08-07 155 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将是一个不错的主意。