2013-09-29 21 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