1

同じコードの 2 つのバージョンがあります。この最初のバージョンはうまく機能しますが、新しく読み込まれたコンテンツには適していません。

    // Do some fancy ajax loading and URL rewriting when link is clicked

    var linkButton = $(".jsHistory a");

    linkButton.on("click", function() {
        // If link is already selected do nothing
        if($(this).parent().hasClass("selected")) {
            return false;
        // Else load new content and update URL
        } else {
            linky = $(this).attr("href");
            history.pushState(null, null, linky);
            showActiveLink();
            loadContent(linky);
            return false;
        }
    });

この 2 番目のバージョンでは、クリックされた特定の linkBut​​ton に関連するすべてが必要であり、うまくいくと思います。ただし、セレクターを渡すのに苦労しています。

    // Do some fancy ajax loading and URL rewriting when link is clicked

    var linkButton = $(".jsHistory a");

    $(document).on({
        click: function() {
            If link is already selected do nothing
            if($(this).parent().hasClass("selected")) {
                return false;
            // Else load new content and update URL
            } else {
                linky = $(this).attr("href");
                history.pushState(null, null, linky);
                showActiveLink();
                loadContent(linky);
                return false;
            }
        }
    }, linkButton);

私がこれを達成する方法を知っている人はいますか?御時間ありがとうございます。

4

2 に答える 2

1

jQueryオブジェクトではなく、委任されたイベントハンドラーの文字列のみを受け入れるように見えるon()ため、これを行う必要があります。

$(document).on({
    click: function() {
        if( !$(this).parent().hasClass("selected") ) {
            var linky = $(this).attr("href");
            history.pushState(null, null, linky);
            showActiveLink();
            loadContent(linky);
        }
        return false;
    }
}, '.jsHistory a');

フィドル

于 2013-05-02T16:38:05.890 に答える