replaceWith第二次不起作用

时间:2013-08-07 15:57:42

标签: jquery replacewith

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

我点击列表项并将结果存储在变量中。然后我加载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>

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

2 个答案:

答案 0 :(得分:6)

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

您需要的是text()

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

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

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

答案 1 :(得分:0)

我认为这是你的问题:

if(xmlTitle=htmlTitle)

尝试将其更改为

if(xmlTitle==htmlTitle)

另外,将replaceWith替换为htmltext会是一个好主意。