2011-11-01 101 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