1

私は同位体フィルターとハッシュ履歴を利用するウェブサイトに取り組んでいます。
ただし、フィルターを機能させるに#filter=.printは、サムネイルのパーマリンクの後に追加する必要があります"a.perma"。これ".print"は、クリックされているフィルターのクラスです"option-set a"。この場合、印刷フィルター。
私はjQueryにあまり熟練していないので、助けていただければ幸いです。
これが私がいじっていたコードです:

var myClass;

jQuery("option-set a").click(function() {
    myClass = jQuery(this).attr("class");
});

jQuery("a.perma").each(function() {
    var _href = jQuery(this).attr("href"); 
    jQuery(this).attr("href", _href + myClass);
});
4

2 に答える 2

1

これが動作するコードです。以前のフィルターをすべて削除します。別のページに移動して戻った後も、パーマリンク値を保持します。を使用しlocalStorageます。

if(typeof(Storage)!=="undefined") {
    var oldClass = localStorage.getItem("permalink");

    if(oldClass != null && oldClass != "") {
        jQuery("a.perma").each(function() {
            var _href = jQuery(this).attr("href"); 
            _href = _href.split("#")[0];

            jQuery(this).attr("href", _href + "#filter=." + oldClass);
        });
    }
}

jQuery("option-set a").click(function() {
    myClass = jQuery(this).attr("class");

    jQuery("a.perma").each(function() {
        var _href = jQuery(this).attr("href"); 
        _href = _href.split("#")[0];

        jQuery(this).attr("href", _href + "#filter=." + myClass);

        if(typeof(Storage)!=="undefined") {
            localStorage.setItem("permalink", myClass);
        }
    });
});
于 2013-01-07T14:50:23.933 に答える
1

これを試す.attr()には、関数を使用して新しい値を決定および設定し、繰り返して個別に取得/設定する必要がないようにします。

jQuery("option-set a").click(function() {
    var myClass = this.className; // same as $(this).attr('class');
    jQuery('a.perma').attr('href', function(i, oldHref) {
        return oldHref + '.' + myClass;
    });
});

元のhref属性がどのように見えるかに応じて、文字列に多かれ少なかれ追加する必要がある場合があります。#filter=上記では、パーツはすでに含まれていると想定しています。また、既存のものに含まれていないことを確認して、href複数回追加されないようにすることもできます。

于 2013-01-07T14:52:39.560 に答える