为什么这个jquery文本切换不起作用?

时间:2011-12-01 08:22:13

标签: jquery

好吧不确定代码上的内容是否会切换类,但是当你再次点击它时,可以看到该类被删除但是文本保持不变"锁定..."并且不会改回原版。

这是jQuery代码

$("#sprv").click(function() {
                 $(this).toggleClass('btn_active');

                 $(".prv").text("Make private?");

                 }, function(){

                 $(this).toggleClass('btn_active');

                 $(".prv").text("Locked...");
});

<span class="prv">Make private?</span>

有人可以告诉我我做错了什么以及如何解决这个问题。提前致谢

2 个答案:

答案 0 :(得分:2)

您正在将两个函数传递给单击处理程序。你不能这样做(它将第一个函数解释为eventdata,第二个函数解释为处理程序 - 请参阅http://api.jquery.com/click/)。您只需要传递一个事件处理程序。它可以处理这两种情况,例如:

$('#sprv').click(function() {
    $(this).toggleClass('btn_active');
    $('.prv').text($(this).hasClass('btn_active') ? 'Locked...' : 'Make private?');
});

首先切换类,然后使用jQuery.hasClass()确定它是否具有btn_active类。它总是更新文本,但它根据状态使用一个值(从刚刚切换的类中确定)。

答案 1 :(得分:1)

我认为你要找的是toggle

试试这个:

 $("#sprv").toggle(function() {
    $(".prv").text("Locked...");

 }, function(){ 
    $(".prv").text("Make private?");
 });

使用html:

<input type="button" id="sprv" value="clickme" />  
<span class="prv">Make private?</span>