0

そのため、クリックしたページに移動した後、リンクのスタイルを変更できるようにしたいと考えています。私は次のコードを使用しています:

$(document).ready(function(){
var url = document.URL;
function contains(search, find) {
    return search.indexOf(find) !== -1;
};
$('#topbar a').each(function(){
    var link = $(this).attr('href');
    var answer = contains(link,url);
    if(answer === true){
        $(this).addClass('check');
    }
    else{
        $(this).addClass('nocheck');
    };
});
});

これは私のナビゲーションバーのリンクを通過し、リンクと同じページにあるかどうかを確認し、機能しますが、特定のケースでは使用できません: ランダム.

持っているページからランダムにページを生成するリンクを持っているので、ページをランダムに生成する機能にリンクしているため、特定のリンクはありません(注:機能を変更したり、そこから情報にアクセスしたりすることはできません)。

それで、ランダムリンクが以前にクリックされたことをどのように検出して、.checkクラスを与えることができますか

4

1 に答える 1

2

私があなたの質問を正しく理解していれば、これにはlikerandomがあるため、あなたの関数はリンクに対して機能しませんが、サーバーは実際には別のページにリダイレクトします.ランダムなボタンであり、アクティブな状態にはなりません。hrefhttp://mysite.com/randomhttp://mysite.com/about-me

もう一度クリックしても同じページに移動しない可能性が高いため、アクティブな状態にしたい場合は議論することができますが、それは問題ではありません。

これを解決する方法を見ることができます。

サーバー側:
ie にリダイレクトする代わりに。http://mysite.com/about-meランダム関数では、にリダイレクトすることもできますhttp://mysite.com/about-me?random。この get 変数を追加することによって、リンクの動作を変更しないでください (非常に厳密なコントローラーがある場合や、その変数が実際に使用されている場合を除きますが、その可能性は低いです)。その変数がURLに存在するかどうかをjavascriptで検出し、randomボタンをアクティブにすることができます。

このようなもの:

$(document).ready(function(){
  var url = document.URL;
  // check for random
  if (url.indexOf('?random') >= 0) {
     $('#topbar a.random').addClass('check');
  }
  // check all other
  $('#topbar a:not(.random)').each(function(){
      if($(this).attr('href').indexOf(url) >= 0){
         $(this).addClass('check');
      }
      else{
         $(this).addClass('nocheck');
      };
  });
});

cookie:
サーバー側のランダム コントローラーにアクセスできない場合は、cookie を使用して JavaScript で完全に行うことができます (ページ リクエストを通じて変数を永続化する方法は私が知っている唯一の方法です)。

ボタンをクリックすると、実際のリンクを実行させる前にrandom、最初randomに JavaScript で Cookie を true に設定します。ページに入ると、前のオプションと同様のチェックを行うことができますが、URL の代わりに、Cookie が tre であるかどうかをチェックします。その場合は、false に変更し (次のページのリクエストでランダム ボタンが再度アクティブにならないようにします)、randomボタンをアクティブに設定します。

最初の解決策が優先されると私は信じています (Cookie は最後の手段としてのみ使用する必要があります。Cookie はページ要求ごとに送信されます。これは余分なデータを意味し、ユーザーが Cookie を無効にしている場合や、Cookie の使用を禁止する法律がある場合があります)。 、そのため、関数は常に機能するとは限りません)、まだ JavaScript を記述しません。このソリューションを好むかどうか、さらにサポートが必要かどうかお気軽にお問い合わせください。

于 2013-06-13T19:59:42.393 に答える