2013-08-07 1 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

xmlTitle включает элемент с идентификатором слайд-шоу? если нет, то поэтому он не работает второй раз. #slideshow не существует. Скорее всего, вам действительно нужен .html, а не replaceWith. –

+0

if (xmlTitle = htmlTitle) выглядит неправильно. Вы имели в виду if (xmlTitle == htmlTitle)? –

ответ

4

После выполнения в первый раз $("#slideshow") больше не существует, так как вы заменяете весь div с идентификатором из XML.

Что вам нужно text():

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

или html(), если вы планируете добавить HTML:

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

Я думаю, что это ваша проблема:

if(xmlTitle=htmlTitle)

Try меняя это на

if(xmlTitle==htmlTitle)

Кроме того, замена replaceWith с html или text бы хорошей идеей.