2013-12-13 70 views
-1

我有一個論壇,有一個「訂閱」和「取消訂閱」按鈕。當您點擊一次時,它會更改,但在頁面刷新之前不會再切換回來。Javascript功能只適用於頁面刷新後

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; 
    }); 
}); 
+0

請使用HTML創建一個小提琴。 – Shreyas

+0

我猜這是$(this).removeClass('notsubscribedtotopic')。addClass('subscribedtotopic');行,因爲你綁定事件的dom具有相同的類,你在這裏刪除 – anand4tech

+0

對不起 - 這是我的小提琴:http://jsfiddle.net/7QPyL/ – Madness

回答

0

它不工作,因爲類是不存在的,當你添加事件處理程序,因此它無法找到的元素。

$(".notsubscribedtotopic") and $(".subscribedtotopic")不會在添加到頁面時奇蹟般地選擇新元素。

你應該寫一個函數,只是切換狀態。

$(".subscribe").click(function() { 
    var link = $(this); 
    var isSubscribbed = link.hasClass("subscribedtotopic"); 
    link.toggleClass("subscribedtotopic notsubscribedtotopic"); 
    ... 
}); 
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的答案。