5

我需要单击列表项以将 div 中的文本替换为 xml 文件中节点中的文本。

我单击一个列表项并将结果存储在一个变量中。然后我加载 xml,找到我需要的节点的标题,并为结果创建一个变量。然后我运行一个 if 语句,如果两个变量相等,则将 xml 放入一个 div 中。

我第一次单击列表项时,这是可行的。列表中正确的项目与 xml 中的正确节点匹配,并且正确的文本放置在 div 中。

但是当我然后单击不同的列表项时,文本不会被替换。一个alert显示第二次点击得到了正确的信息,但最后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>

帮助表示赞赏。我不轻易问。我在这方面花了很多时间,并以我能想到的各种方式进行了研究。图我错过了一些非常简单的东西,但就是找不到。

4

2 回答 2

10

第一次执行后,$("#slideshow")不再存在,因为您将整个 div 替换为 XML 中的 id

你需要的是text()

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

或者html()如果您打算添加 html:

$("#slideshow").html(xmlTitle);
于 2013-08-07T16:03:15.980 回答
0

我认为这是你的问题:

if(xmlTitle=htmlTitle)

尝试将其更改为

if(xmlTitle==htmlTitle)

此外,替换replaceWithhtmlortext将是一个好主意。

于 2013-08-07T16:06:01.003 回答