2014-10-16 121 views
0

当我点击标签为“杂志引文”的复选框时,我希望带有班级'boat_prize_award_radio_buttons'的div能够显示/隐藏,取决于复选框是否被选中。我如何使这项工作正确?如何选择此div元素显示/隐藏与jQuery?

这里是我当前的CoffeeScript/jQuery代码:

$(document).ready -> 
    $(".benefit_flag").change -> 
    selected_obj = $(this).parent('div') 
    if $(this).is(":checked") 
     selected_obj.find('boat_prize_award_radio_buttons').show() 
    else 
     selected_obj.find('boat_prize_award_radio_buttons').hide() 




<div class='outcome'> 
    <ul> 
    <li>etc.</li> 
    <li>etc.</li> 
    <li>etc.:</li> 
    <fieldset class="inputs"><ol><li class="boolean input optional" id="person_magazines_attributes_12_benefit_flag_input"><input name="person[publications_attributes][12][benefit_flag]" type="hidden" value="0" /><label class="" for="person_magazines_attributes_12_benefit_flag"><input class="benefit_flag" id="person_magazines_attributes_12_benefit_flag" name="person[publications_attributes][12][benefit_flag]" type="checkbox" value="1" />Magazine citation</label> 

    </li> 
    <li class="radio input optional" id="person_magazines_attributes_12_citation_status_input"><fieldset class="choices"><ol class="choices-group"><li class="choice"><label for="person_magazines_attributes_12_citation_status_magic_was_cited"><input id="person_magazines_attributes_12_citation_status_magic_was_cited" name="person[publications_attributes][12][citation_status]" type="radio" value="Magazine was mentioned" />Magazine was mentioned</label></li> 
    <li class="choice"><label for="person_magazines_attributes_12_citation_status_magic_was_not_cited_but_should_have_been"><input id="person_magazines_attributes_12_citation_status_magic_was_not_cited_but_should_have_been" name="person[publications_attributes][12][citation_status]" type="radio" value="Magazine was not mentioned" />Magazine was not mentioned</label></li></ol></fieldset> 

    </li> 
    </ol></fieldset> 
    <div class='boat_prize_award_radio_buttons'> 
     <p>My pilot fund award contributed to this outcome</p> 
     <li class="radio input optional" id="person_magazines_attributes_12_boat_prize_award_contributed_input"><fieldset class="choices"><ol class="choices-group"><li class="choice"><label for="person_magazines_attributes_12_boat_prize_award_contributed_yes"><input id="person_magazines_attributes_12_boat_prize_award_contributed_yes" name="person[publications_attributes][12][boat_prize_award_contributed]" type="radio" value="Yes" />Yes</label></li> 
     <li class="choice"><label for="person_magazines_attributes_12_boat_prize_award_contributed_no"><input id="person_magazines_attributes_12_boat_prize_award_contributed_no" name="person[publications_attributes][12][boat_prize_award_contributed]" type="radio" value="No" />No</label></li></ol></fieldset> 

     </li> 
    </div> 
    </ul> 
</div> 

回答

1

您可以使用jQuery的父母()方法。 jQuery的parent()方法只向DOM树上的单层传递。 另外,当在jQuery的find()方法中给classname作为参数时,您需要给出。课前名称。

这里是你想要的脚本:

$(document).ready -> 
    $(".benefit_flag").change -> 
    selected_obj = $(this).parents('div') 
    if $(this).is(":checked") 
     selected_obj.find('.boat_prize_award_radio_buttons').show() 
    else 
     selected_obj.find('.boat_prize_award_radio_buttons').hide() 

而且,按照您的要求,你应该通过把该代码在$隐藏在页面加载的单选按钮(文件)。就绪功能或使用display:none CSS的属性

+0

谢谢,这个答案的主要问题是,我想单个父母 - 选择多个父母意味着我关闭了所有的孩子一类“.boat_prize_award_radio_buttons”。当我用$(this).parent('div')尝试它时,它没有关闭任何东西。 – Nona 2014-10-17 00:06:50

+0

我只是想通了:selected_obj = $(this).parents('div')。filter('div.outcome')会给我我需要的,谢谢 – Nona 2014-10-17 00:11:24

+1

你也可以使用selected_obj = $(this).parents ('。结果') – Chitrang 2014-10-17 00:14:26