2010-05-12 73 views
1

我在jQuery中有一組單選按鈕,它們在點擊時都具有相同的行爲(它們顯示一些隱藏的字段)中的以下代碼。我以前爲每個單獨的選擇器複製相同的代碼,所以我只是使用了多個選擇器,如下面的代碼。但是,這不起作用,因爲當兩個單選按鈕位於同一頁面上時,正確的顯示/隱藏行爲似乎被混淆了。這是因爲我用live()使用$(this)?還是有什麼我做錯了?感謝您的幫助,只是儘量保持這些代碼儘可能乾淨,並且希望避免爲每個選擇器重複複製它!jquery單選按鈕單擊事件問題

//event handler for radio fields with subsections 
     $("input[name='registered'], input[name='voted'], input[name='report'], input[name='newsletter']").live("click", function(){ 
      //check if value is true 
      if ($(this + ":checked").val() == '1') 
       $(this).parent().find('span.hidden').fadeIn("slow"); 
      else 
       $(this).parent().find('span.hidden').hide(); 
     }); 

回答

1

您的if語句中的選擇器不正確。嘗試:

if ($(this).filter(':checked').val() == '1') 

甚至

if ($(this).val() == '1') 

你有它的方式,將字符串化的this元素,並在前面加上它來「檢查」。顯然不是你想要的。你想要看看是否點擊的元素 - 只有一個會觸發事件,所以this將對應於點擊元素,從而消除了過濾器的需要,我相信 - 具有正確的值。

+1

不要忘記$(this).is(':checked')選項 - 總是看起來最容易閱讀。 – 2010-05-12 16:33:48

+0

謝謝你們 - 完美的作品。 – 2010-05-12 16:34:55