3

各リンクをクリックしたときに現在の状態を選択済みに設定したい。私はこれを行うことができます:

HTML

<ul class="places">
    <li class="selected">
       <a href="javascript:void(0)" onclick="myClick(0);">
          <span class="date">Saturday November 2, 2013</span>
          <span class="time">10am – 12pm</span>
          <span class="location">Western Sydney Parklands</span>
       </a>
    </li>
    <li>
       <a href="javascript:void(0)" onclick="myClick(1);">
          <span class="date">Saturday November 9, 2013</span>
          <span class="time">10am – 12pm</span>
          <span class="location">Bankstown High School</span>
       </a>
    </li>
    <li>
       <a href="javascript:void(0)" onclick="myClick(2);">
          <span class="date">Tuesday November 12, 2013</span>
          <span class="time">9am – 11am</span>
          <span class="location">Greystanes Park</span>
       </a>
    </li>
</ul>

Jクエリ

 $(document).ready( function() {
        $('.places li a').click( function() {
           $('.places li').removeClass('selected');
           $(this).parent().addClass('selected');
        });
    });

myClick()ただし、呼び出し関数が呼び出されてデータをマップにプッシュするため、これにより各リンクで onclick イベントが 2 回トリガーされます。次に、これらをmyClick()関数に実装することにしました。

function myClick( id ) {
    google.maps.event.trigger(markers[id], 'click');
    $('.places li').removeClass('selected');
    $(this).parent().addClass('selected');
}

$(this)問題は、クラスを親に追加するために使用できないことliです。ここで試したことを参照してください。

どんな助けでも大歓迎です。ありがとう!

4

5 に答える 5

4

あなたが言っているので、jQuery クリック ハンドラーを使用することはできません。クリックされたアンカー要素の参照をmyClickusingに渡します。onclick="myClick(0, this);"

<li class="selected">
   <a href="javascript:void(0)" onclick="myClick(0, this);">
      <span class="date">Saturday November 2, 2013</span>
      <span class="time">10am – 12pm</span>
      <span class="location">Western Sydney Parklands</span>
   </a>
</li>

それから

function myClick( id, el ) {
    google.maps.event.trigger(markers[id], 'click');
    $('.places li').removeClass('selected');
    $(el).parent().addClass('selected');
}
于 2013-10-23T04:02:24.673 に答える
2

数字は実際にはインデックスのようです。つまり0、最初のアンカー、12 番目のアンカーなどです。その場合、次のコードを使用できます。

jQuery(function($) {
    var $places = $('.places li a'),
    $selection;

    $places.on('click', function(e) {
        e.preventDefault();

        if ($selection) {
            $selection.removeClass('selected');
        }

        $selection = $(this).parent()
            .addClass('selected');

        myClick($places.index(this));
    });
});

残りの HTML は次のようになります。

<li class="selected">
   <a href="#">
      <span class="date">Saturday November 2, 2013</span>
      <span class="time">10am – 12pm</span>
      <span class="location">Western Sydney Parklands</span>
   </a>
</li>

それがどれほどきれいか分かりますか?;-)

于 2013-10-23T06:36:45.037 に答える
1

Change this code

$(this)

to

$(this.event.srcElement).parent().parent() //span is clicked, go to anchor then go to li
于 2013-10-23T03:46:35.887 に答える