2013-09-29 20 views
0

我試圖讓這個工作,但不能得到它。所以我試圖在這裏做的是,當點擊鏈接(.hidepage)時,它會運行ajax,當它完成時,它會改變鏈接名稱和類名(to> showpage)。什麼是不工作是再次點擊該鏈接顯示頁面時,它再次運行隱藏。jQuery:在點擊時,改變類,並使其可以繼續

$('.hidepage').on('click', function(e){ 
var pageStatus = $(this).closest('tr').find('.pagestatus'); 
var button = $(this); 
var pageID = $(this).attr('pageid'); 

$.ajax({ 
    type: 'POST', 
    url: Jarvis.ajax_url + 'hidepage', 
    data: { pageid: pageID }, 
    success: function(data) 
    { 
     console.log(data); 
     pageStatus.html('<span class="label label-default">Hide page</span>'); 
    }, 
    complete: function() 
    { 
     button.removeClass('hidepage').addClass('showpage').html('Show page'); 
    }, 
    error: function(xhr, textStatus, error){ 
     console.log(xhr.statusText); 
     console.log(textStatus); 
     console.log(error); 
    } 
}); 
}); 

並且對於showpage類有相同的代碼用於相反的動作。其他一切正在工作。 pageStatus正在改變,鏈接名稱正在改變,但行動不.. 感謝您的幫助! :)

+0

刪除類並添加新類不會奇蹟般地移除已附加到元素的事件處理程序。 – adeneo

+0

@MikeCheel classname showpage有相反的動作代碼。和類名稱正在改變。 – Marko

+0

爲什麼你把switcheroo部分在完整的事件,而不是成功? –

回答

2

類showpage動態添加到元素。所以,事件處理程序不應該綁定到.hidepage或.showpage,而是綁定到它的父項。下面的實施例:

假設.showpage的父是#showPageDiv,

$('#showPageDiv').on('click', '.showpage', function() { 
    //handle show page 
}); 

同樣,做.hidepage因爲還可以動態地添加。

+0

這是否解決了您的問題?如果是的話,接受它。 – Rajesh

+0

對不起,延遲,不得不測試它,這是解決方案! :)需要特定於像div#showPageDiv這樣的指向元素來使其工作。謝謝你,先生! – Marko

+0

哇!不要以主席先生的身份致我。 :)我們就像一個在這裏試圖互相幫助的社區。 – Rajesh