0

我有以下 jquery,当您单击链接时,它只会更新其上的文本和类。它在 Chrome 中运行良好,但在 IE 中,您必须单击链接两次才能执行任何操作。我会理解它是否根本不起作用,但无法弄清楚为什么您需要单击它两次!

  // 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

如何删除“return false”?

于 2012-12-13T09:35:46.933 回答
0

您可以稍微简化您的代码并使用和toggleClass来摆脱:hasClasspreventDefault()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();
        });
    }

从技术上讲,如果您为链接提供另一个不变的类,这两个事件处理程序也可以替换为一个。

于 2012-12-13T09:38:48.477 回答