-1

我整个早上都在研究这个,我错过了一些东西。

这是基本设置和代码:

<script  src="/mwebphoto/js/jquery-2.0.3.js"></script>

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

</head>
<body>

<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").click(function () {
          var htmlTitle = (this.id);

          $.ajax({
              type: "GET",
              url: "/mwebphoto/xml/albums.xml",
              dataType: "xml",
              success: function (xml) {
                  $(xml).find('album').each(function () {
                      var xmlAlbum = $(this);
                      var xmlTitle = $(this).find('title').text();
                      var xmlEmbedCode = $(this).find('embedCode').text();
                        if (xmlTitle == htmlTitle) 
                          alert(xmlTitle)
                          $("#slideshow").replaceWith(xmlTitle)

                  });
              }
          });
      });

  });
</script>

(注意,我已经根据答案编辑了这个,从这里开始)

我相信问题出在这里:

if(xmlTitle==htmlTitle) 
  alert(xmlTitle) 
  $("#slideshow").replaceWith(xmlTitle) 

警报工作正常。但是 .replaceWith 将第二个 li (断开连接)放在 div 中,无论我单击哪个列表项。

你可以在这里看到:http: //mwebphoto.com/mwebphoto/html/2ndJqueryPage.html

4

2 回答 2

2
$("#gallery_id li").on('click', 'li', function(e) {
       //represents li within li
  });

它应该是

$("#gallery_id li").on('click', function(e) {
       alert(this.id);
  });

或者

$("#gallery_id").on('click','li', function () {
         alert(this.id);
     })

或者

$(document).on('click','#gallery_id li', function () {
         alert(this.id);
     })

尝试这个。

更新:

为了显示差异,我创建了

  1. 你的小提琴

  2. 正确的小提琴

希望你能找到不同之处。

于 2013-08-06T14:42:52.473 回答
0

如果你的 html 是

<ul id="gallery_id">
   <li>1</li>
   <li>2</li>
</ul>

试试这个代码。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。

 $("#gallery_id").on('click','li', function () {
         // your code
     })
于 2013-08-06T15:25:55.547 回答