0

リンクをクリックすると、テキストとクラスが更新されるだけの次のjqueryがあります。Chrome では見事に動作しますが、IE ではリンクを 2 回クリックする必要があります。まったく機能しない場合は理解できますが、2 回クリックする必要がある理由がわかりません。

  // Subscribe to topic subscribedtotopic
    $(".notsubscribedtotopic")
    .on("click", (function () {
        SubscribeUnsubscribe($(this));

    }));


    // UnSubscribe to topic subscribedtotopic
    $(".subscribedtotopic").on("click", (function () {
        SubscribeUnsubscribe($(this));
    }));


    function SubscribeUnsubscribe(link) {

        var topicid = link.attr('rel');
        link.slideUp('fast');
        if (link.attr('class') == 'notsubscribedtotopic') {
            link.html('Unsubscribe From Topic');
            link.removeClass('notsubscribedtotopic').addClass('subscribedtotopic');
            link.slideDown();

            return false;
        } else {
            link.html('Subscribe To Topic');
            link.removeClass('subscribedtotopic').addClass('notsubscribedtotopic');
            link.slideDown();

            return false;
        }

    };
4

2 に答える 2

0

「returnfalse」を削除してみませんか?

于 2012-12-13T09:35:46.933 に答える
0

コードを少し単純化し、toggleClassと をhasClass一緒に使用して、preventDefault()を取り除くことができreturn falseます。

// Subscribe to topic subscribedtotopic
    $(".notsubscribedtotopic").on("click", function (event) {
        SubscribeUnsubscribe($(this));
        event.preventDefault();
    });


    // UnSubscribe to topic subscribedtotopic
    $(".subscribedtotopic").on("click", function (event) {
        SubscribeUnsubscribe($(this));
        event.preventDefault();
    });

    function SubscribeUnsubscribe(link) {

        var topicid = link.attr('rel');
        link.slideUp('fast', function(){
            if (link.hasClass('notsubscribedtotopic')) {
                link.html('Unsubscribe From Topic');
            } else {
                link.html('Subscribe To Topic');
            }

            link.toggleClass('notsubscribedtotopic').toggleClass('subscribedtotopic');
            link.slideDown();
        });
    }

技術的には、変更されない別のクラスをリンクに指定すると、2 つのイベント ハンドラーを 1 つに置き換えることもできます。

于 2012-12-13T09:38:48.477 に答える