如何使多个切换在jquery中工作

时间:2015-06-23 05:44:46

标签: jquery

我正在研究jquery脚本,在cliking addmore按钮之后,会附加一个特殊的html代码块。 在每个块中都有复选框,点击复选框,隐藏了html的某些部分。我的问题是要独立隐藏每一个。

<script type="text/javascript">
    $(document).ready(function(){
        $('input[type="checkbox"]').click(function(){

            if($(this).attr("value")=="YES"){
                $(".box").toggle();
                /*$("#ab").html('currently Attending');*/
            }
        });
    });
</script>

 <script>
$(document).ready(function(){
$('#addmore').click(function(){
$('#item2').append("<div class='form-group'><label class='col-sm-4 '>Period</label><div class='col-sm-8'><div class='checkbox'><label><input type='checkbox' value='YES' name='currently_attending'>I`m currently attending this course</label></div><div class='row'><div class='col-xs-3'> Month<select class='span2  form-control' required name='from_month'><option value=''>Month</option><option value='Jan'>Jan</option>\
                                     \ <option value='Feb'>Feb</option>\
                                      <option value='March'>March</option>\
                                      <option value='April'>April</option>\
                                      <option value='May'>May</option>\
                                      <option value='June'>June</option>\
                                      <option value='July'>July</option>\
                                      <option value='Aug'>Aug</option>\
                                      <option value='Sept'>Sept</option>\
                                      <option value='Oct'>Oct</option>\
                                      <option value='Nov'>Nov</option>\
                                      <option value='Dec'>Dec</option>\
                                    </select>\
                                  </div>\
                                 <div class='col-xs-3'>\
                                  Year\
                                      <input type='text' class='form-control' placeholder='year' name='from_year' required pattern='[0-9]{4,4}'>\
                                  </div>\
                                  <span class='box'>\
                                  <div class='col-xs-3'>\
                                  Month\
                                    <select class='span2 form-control'  name='to_month' >\
                                      <option value=''>Month</option>\
                                      <option value='Jan'>Jan</option>\
                                      <option value='Feb'>Feb</option>\
                                      <option value='March' >March</option>\
                                      <option value='April'>April</option>\
                                      <option value='May'>May</option>\
                                      <option value='June'>June</option>\
                                      <option value='July'>July</option>\
                                      <option value='Aug'>Aug</option>\
                                      <option value='Sept'>Sept</option>\
                                      <option value='Oct'>Oct</option>\
                                      <option value='Nov'>Nov</option>\
                                      <option value='Dec'>Dec</option>\
                                    </select>\
                                  </div>\
                                  <div class='col-xs-3'>\
                                  Year\
                                     <input type='text' class='form-control' placeholder='year' name='to_year'  >\
                                  </div>\
                                  </span>\
                                  <div id='ab'></div>\
                                </div>\
                              </div>\
                            </div>\
                           <div class='cl'></div>\
                            <div class='form-group'>\
                              <label class='col-sm-4'>Degree / Course title*</label>\
                              <div class='col-sm-8'>\
                                <input type='text' class='form-control ' name='title' required />\
                              </div>\
                            </div>\
                           <div class='cl'></div>\
                                      ")});



});
$("#item2").on("click",".delete", function(){
$(this).closest(".form-group").remove();
});
                             </script>

1 个答案:

答案 0 :(得分:2)

试试这个 -

$(document).ready(function(){
    $(document).on('change','input[type="checkbox"]',function(){
        var boxElement=$(this).closest('.form-group').find('span.box');
        $(this).is(':checked')?boxElement.hide():boxElement.show();

    });
});

http://jsfiddle.net/1hsbzkxw/2/

或切换方式 -

$(document).ready(function(){
    $(document).on('change','input[type="checkbox"]',function(){
        var boxElement=$(this).closest('.form-group').find('span.box');
        boxElement.toggle();
    });
});

http://jsfiddle.net/1hsbzkxw/3/

说明 -

var boxElement=$(this).closest('.form-group').find('span.box');

$(this) - 是触发事件的当前目标,在您的情况下,这是一个复选框。

现在来自它在DOM中的层次结构它找到了具有calss .form-group的最直接(最接近)的元素。 在您的情况下,此类最多为父div.form-group

下一步 - 现在它搜索类box的范围,显然位于课程.form-group内。

一旦找到该元素,它就会获得该元素的状态,无论它是隐藏还是显示在DOM上。

如果隐藏然后切换显示它,如果显示切换隐藏它。 这就是切换的工作方式。