2

私はJavaScriptとjQueryを初めて使用するので、ベースから離れているかどうかを知らせてください。ここからCookieプラグインを使用しています:https ://github.com/carhartl/jquery-cookie 。

動的リンクのあるページがあります。URLにいくつかのGET情報を含めて、ユーザーを既に表示しているのと同じページに送信します。クリックした前のリンクを強調表示できるようにしたい。

私のアイデアは、クリックされた要素をCookieに保存してから、その要素にクラスを追加することでした。

クッキーの設定

$("td.column1").on({
    click: function () {
      $.cookie('productCookie', this); //How do I store 'this' into the cookie?
    }
});

クッキーの取得

var productValue = $.cookie('productCookie');
$(productValue).addClass("select singleselected");

クッキーなしのコード

このコード行は、リンクを追加する前、つまりページが再描画される前に機能したことを経験から知っています。

$(this).addClass("select singleselected");

thisキーワードがどのように機能するかを調べてみましたが、addClassメソッドが取得しているセレクターや、現在の要素を取得する方法がわかりません。

使用したソリューション

function getParameters(geturl, columnNumber) {
    var url = geturl,
        urlRegExp = new RegExp(url.replace(/\/$/, ''));

    $(columnNumber).each(function () {
        if (urlRegExp.test(this.href)) {
            $(this).addClass("singleselected select");
        }
    });
}
4

3 に答える 3

1

要素に ID がある場合は、要素の ID を Cookie に保存して、次のページ読み込み時に強調表示できます。Cookie(およびlocalStorage)は、文字列、または文字列にシリアル化できるもののみを保存できます。HTML 要素はシリアライズできません。

于 2012-09-14T21:00:54.263 に答える
1

このスレッドをチェックしてください: jQuery add class .active on menu

基本的な考え方は、現在の URL を解析し、その URL に基づいてアクティブなアンカー タグを見つけることです。

于 2012-09-14T21:01:41.520 に答える
0

Cookie は文字列を保持します。リンクがクリックされた文字列ベースのインジケーターを保存する必要があります。

テーブル内の ID や行番号、またはそのようなものである可能性があります。次に、ページの読み込み時に Cookie を読み取ると、そのインジケーターに一致する DOM 要素を見つけて、それに応じて変更できます。

DOM 要素の参照は文字列ではなく、あるページの読み込みから次のページの読み込みまで持続しないため、DOM 要素の参照を Cookie に保存することはできません。特定の DOM 要素の参照は、特定のページにのみ存在します。

保存したいものをカバーする実際の HTML を表示すると、Cookie に保存する意味があるものについて、より具体的な参照を作成できます。テーブルの場合は、おそらく行/列の数 (文字列形式に変換) です。すべてのリンクに一意の ID がある場合、ID を保存するのが最も簡単です。

于 2012-09-14T21:01:44.533 に答える