我正在研究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>
答案 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上。
如果隐藏然后切换显示它,如果显示切换隐藏它。 这就是切换的工作方式。