2011-12-01 47 views
2

好吧不知道代碼上的代碼是否會切換類,但是當你再次點擊它時,很容易看到該類被刪除,但是文本保持相同的「鎖定...」並且不會更改回原始。爲什麼這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

您正在傳遞兩個函數到點擊處理程序。你不能這樣做(它將第一個函數解釋爲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類。它總是更新文本,但它根據狀態使用一個值(從剛剛切換的類中確定)。

+0

一,工作得很好。謝謝:)應該給文檔多讀幾次。不幸的是,我用長長的jQuery來製作大部分我的東西,所以用縮短的方法不太好。但應該學會讓生活更輕鬆 –

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> 
+0

這裏的朋友有什麼與downvote? – Contra

+0

* Dur *。想要投票,點擊了錯誤的箭頭。對於那個很抱歉。修復。 –

+0

我認爲你的回答實際上比我的好,應該是被接受的答案。 –