Javascript函数仅在页面刷新后才起作用

时间:2013-12-13 13:54:45

标签: javascript jquery umbraco

我有一个有“订阅”和“取消订阅”按钮的论坛。当你点击它一次,它会改变,但在页面刷新之前不会再切换回来。

http://jsfiddle.net/7QPyL/

这是我的代码:

$(document).ready(function () {

// Subscribe to topic subscribedtotopic
$(".notsubscribedtotopic").click(function () {
    var topicid = $(this).attr('rel');
    $(this).slideUp('fast');
    $(this).html('Unsubscribe From Topic');
    $(this).removeClass('notsubscribedtotopic').addClass('subscribedtotopic');
    $(this).slideDown();
    $.get("/base/Solution/SubScribeToTopic/" + topicid + ".aspx",
    function (data) {
        var result = $('value', data).text();
    });
    return false;
});

// UnSubscribe to topic subscribedtotopic
$(".subscribedtotopic").click(function () {
    var topicid = $(this).attr('rel');
    $(this).slideUp('fast');
    $(this).html('Subscribe To Topic');
    $(this).removeClass('subscribedtotopic').addClass('notsubscribedtotopic');
    $(this).slideDown();
    $.get("/base/Solution/UnSubScribeToTopic/" + topicid + ".aspx",
    function (data) {
        var result = $('value', data).text();
    });
    return false;
    });
});

2 个答案:

答案 0 :(得分:0)

它不起作用,因为当你添加事件处理程序时类没有,所以它找不到元素。

$(".notsubscribedtotopic")$(".subscribedtotopic")在添加到网页时不会神奇地选择新元素。

您应该编写一个函数并切换状态。

$(".subscribe").click(function () {
    var link = $(this);
    var isSubscribbed = link.hasClass("subscribedtotopic");
    link.toggleClass("subscribedtotopic notsubscribedtotopic");
    ...
});

答案 1 :(得分:0)

我会将您的代码设置为:

$(document).ready(function () {
    // Subscribe to topic subscribedtotopic
    function subscribetotopic() {
        var topicid = $(this).attr('rel');
        $(this).slideUp('fast');
        $(this).html('Unsubscribe From Topic');
        $(this).removeClass('notsubscribedtotopic').addClass('subscribedtotopic');
        $(this).slideDown();
        $.get("/base/Solution/SubScribeToTopic/" + topicid + ".aspx",
            function (data) {
                var result = $('value', data).text();
            });
        return false;
    }

    // UnSubscribe to topic subscribedtotopic
    function unsubscribetotopic() {
        var topicid = $(this).attr('rel');
        $(this).slideUp('fast');
        $(this).html('Subscribe To Topic');
        $(this).removeClass('subscribedtotopic').addClass('notsubscribedtotopic');
        $(this).slideDown();
        $.get("/base/Solution/UnSubScribeToTopic/" + topicid + ".aspx",
            function (data) {
                var result = $('value', data).text();
            });
        return false;
    }
});

然后在HTML元素中进行简单的onclick调用,如下所示:

<button onclick="subscribetotopic()">Subscribe</button>

如果您希望保持代码的原样,那么请说明您想要激活哪个元素。 示例(只需设置一个div w / id mymainelement和按钮w / id subscribebutton):

$(#mymainelement .subscribebutton).click(function() { ... });

如果你想切换按钮而不是两个单独的元素,请查看@ epsacarello的答案。