2012-12-16 36 views
1

我想在切換面板時切換打開和隱藏單詞。如何在單擊事件時切換兩個單詞

這是我使用的代碼。它只適用於隱藏,但當我點擊下一次它不顯示打開。

$(document).ready(function(){ 
     $(".flip1").click(function(){ 
      $(".panel1").slideToggle("slow"); 
     var val= 0; 
     if(val==0){ 
     $('#word').html("hide").show(); 
     val=1; 
     }else{ 
     $('#word').html("open").show(); 
     val=0; 

     } 
      // $(".info").hide(); 
     }); 
    }); 

幫我改正這個。

回答

2

移動這一行:

var val= 0; 

走出click()回調。

你擁有它的地方是你的點擊處理程序中的一個局部變量,每次調用該處理程序時它都被設置爲0。將其移至處理程序外,它將初始化爲0一次,然後在點擊處理程序中更新。

或者,擺脫變量完全的和做這樣的事情:

$(document).ready(function(){ 
    $(".flip1").click(function(){ 
     $(".panel1").slideToggle("slow"); 
     $("#word").html(function(i,oldHtml) { 
      return oldHtml==="hide"?"show":"hide"; 
     }).show(); 
    }); 
}); 

演示:http://jsfiddle.net/9S5eq/

編輯:如果你傳遞一個回調到.html() method,jQuery的調用它的每個元素jQuery對象,傳遞對象中當前元素的索引和該元素的當前html。它將HTML設置爲您返回的任何值。因此,在只有一個元素的情況下,索引參數實際上並不是必需的,但您不能將其忽略掉,因爲當前值在第二個參數中傳遞(因此i只是一種佔位符)。

+0

感謝現在的工作 – kiriappa

+0

的單擊事件之前,但在你替代碼有oldthtml parmeter之前,我的參數。我不明白爲什麼變量我是。你可以解釋嗎。 – kiriappa

+0

我已經更新了我的答案。 'i'參數在那裏,因爲jQuery使用兩個參數調用該函數,爲此目的需要的是第二個參數。 (無論你喜歡什麼名字,你都可以提供參數。) – nnnnnn

1

您可以使用此代碼

$(document).ready(function(){ 
    var val= 0; 
    $(".flip1").click(function(){ 
     $(".panel1").slideToggle("slow"); 

    if(val==0){ 
    $('#Word').html("hide").show(); 
    val=1; 
    }else{ 
    $('#Word').html("open").show(); 
    val=0; 

    } 
     // $(".info").hide(); 
    }); 
}); 

必須使用var val=0.flip1

相關問題