2011-11-01 128 views
2

任何人都可以幫我解決這個問題嗎?jQuery addClass如果單選按鈕檢查

$(document).ready(function() { 
    if(
     $("input.check").is(":checked")){ 
      $(this).parent().addClass("question-box-active"); 
    } 
}); 

我想添加一個類(問題框活動)的.check(一個單選按鈕)的父母,只有當它被檢查。如果我使用警報測試,它工作正常,但我無法設法添加該類。

謝謝大家的幫助。

更新:這是表單的HTML。我從48中只複製了3個div。正如你可能猜測的那樣,如果在加載頁面時已經選中了單選按鈕,我試圖向問題框添加一個類。到目前爲止沒有運氣。

<div class="question-box"> 
    <input class="check" type="checkbox" name="question-1" value="1" <?php if(isset($_POST['question-1'])) echo "checked"; ?> /> 
    <span class="question">1. Save a rainforest or grow organic vegetables</span> 
</div> 

<div class="question-box alt"> 
    <input class="check" type="checkbox" name="question-2" value="1" <?php if(isset($_POST['question-2'])) echo "checked"; ?> /> 
    <span class="question">2. Solve complicated math problems</span> 
</div> 

<div class="question-box"> 
    <input class="check" type="checkbox" name="question-3" value="1" <?php if(isset($_POST['question-3'])) echo "checked"; ?> /> 
    <span class="question">3. Act in a movie, play, or television show</span> 
</div> 

回答

2

嘗試像

$('input.check').is(':checked').each(function() { 
    $(this).parent().addClass('question-box-active'); 
}); 
2

我覺得$(this)是不是指的單選按鈕,你的情況

你可以綁定的單選按鈕的點擊事件,並決定如何從那裏做...

$(document).ready(function(){ 
    $("input.check").click(function(){ 
     if($(this).is(":checked")){ 
      $(this).parent().addClass("question-box-active"); 
     } 
    }); 
}); 
+0

感謝您的回答卡夫曼。該表單已設置,因此頁面刷新後會在單擊提交後顯示錶單的結果。當單選按鈕被用戶主動檢查時,我已經有了一個點擊功能來添加問題框活動類。但是當頁面刷新結果時,即使按鈕被選中,類也會消失。 – Julesfrog

2

您正在使用的this位於ready處理函數回調的函數上下文中,因此它不像您期望的那樣指向input.check

嘗試這樣代替:

$(document).ready(function() { 

    var foo = $('input.check'); 

    if (foo.is(':checked')) { 
     foo.parent().addClass('question-box-active'); 
    } 

}); 

這是假設你的代碼的邏輯是正確的。不過,我認爲你正在嘗試做類似於Doug在另一個答案中提供的內容。發佈一些HTML可能有助於澄清。

+0

感謝理查德的幫助。我添加了HTML到我原來的問題希望這可以幫助。我喜歡jQuery,但我還不是很擅長。我嘗試了你提供的代碼,但是班級被添加到所有的父母,甚至是那些單選按鈕未被選中的人。我仍在玩弄它,看看我能不能挖出一些東西,但請如果你有任何其他想法,讓我知道。這讓我瘋狂。 – Julesfrog

2

這將工作。

$(document).ready(function() { 

    var foo = $('input.check:checked'); 

    if (foo.is(':checked')) { 
     foo.parent().addClass('question-box-active'); 
    } 
}); 
+0

謝謝!這實際上找到了選中的單選按鈕,而不是檢查是否有在頁面上檢查的輸入。這使我可以在選中的單選按鈕上應用一個班級。 – JDavies

+0

我覺得這段代碼更令人滿意:http://stackoverflow.com/questions/3376412/jquery-add-remove-css-class-on-selected-radio#answer-3376557 – cptstarling