-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 は、どのリスト項目をクリックしても、2 番目の 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 に答える