0

ajax を使用して、div コンテナー内に html ページをロードします。HTML コンテンツは、要素のクリック時に次のように読み込まれます。

$(".link").click(function () {
    $('.link').removeClass('current');
    $(this).addClass('current');
    ajaxify($(this).attr('href'));
    window.location.hash = $(this).attr("href");
    return false;
});

インターネット ブラウザの URL ハッシュが$(".link").attr("href"). そのため、同じ要素をもう一度クリックしても、何も起こらないようにしたいと考えています。

現在、同じ要素をもう一度クリックすると、同じコンテンツが ajax 呼び出しで読み込まれます。

ロイク

4

3 に答える 3

0

セレクターを から に変更し$(".link")$(".link:not(.current)")、クラス を持たないリンクでのみクリック ハンドラーが呼び出されるようにしますcurrent

更新: jQuery は document.ready (またはこのコードが実行される場所) のすべてのリンクにクリック機能を割り当て、クリック時にセレクターをチェックしないため、これは機能しません。currentしたがって、次のように、クリック ハンドラーでクラスを確認する必要があります。

$(".link").click(function () {
  if($(this).hasClass('current')) return false;
  ...
});
于 2013-03-23T15:39:50.657 に答える
0

window.location単にオブジェクトを使用して(または単に現在のスコープのlocation場合)、それをリンクのプロパティと比較することができます。windowhref

$(".link").click(function () {
    if ($(this).attr('href') != location.href) {
      $('.link').removeClass('current');
      $(this).addClass('current');
      ajaxify($(this).attr('href'));
      window.location.hash = $(this).attr("href");
      return false;
    }
});

location.pathnameリンクが相対パスの場合、代わりに使用できますlocation.href

于 2013-03-23T15:42:34.383 に答える
0

次のように、選択したリンクに「現在の」クラスを追加するという事実を利用して、ハンドラーでコードを条件付きで実行できます。

$('.link').click(function () {
    var link = $(this);
    if (!link.hasClass('current')) {
        $('.link').removeClass('current');
        link.addClass('current');
        ajaxify(link.attr('href'));
        window.location.hash = link.attr("href");
    }
    return false;
});
于 2013-03-23T16:01:56.523 に答える