我正在尝试在选中相关复选框时隐藏div。
为了让它与复选框的初始jstate一起使用,我添加了triggerHandler('click')。
这适用于第一个复选框,但不适用于任何其他复选框。
有什么建议吗?
在这里小提琴:http://jsfiddle.net/tb5Yt/100/
非常感谢。
HTML
1<input type = "checkbox" id = "1" checked>
2<input type = "checkbox" id = "2" >
3<input type = "checkbox" id = "3" checked>
<div class = "1">
//Contains 1 elements remove when checked
</div>
<div class = "2">
//Contains 2 elements remove when checked
</div>
<div class = "3">
//Contains 3 elements remove when checked
</div>
Jquery的
$(document).ready(function() {
$("input[type=checkbox]").click(function()
{
divId = $(this).attr("id");
if ($(this).is(":checked")) {
$("." + divId).hide();
}
else if ($(this).not(":checked")) {
$("." + divId).show();
}
}).triggerHandler('click');
});
答案 0 :(得分:1)
首先,你不应该做else if
部分。否则就会这样做。
第二,我会尝试在同一个选择器上调用click函数。请尝试以下代码:
$(document).ready(function() {
$("input[type=checkbox]").change(function()
{
var divId = $(this).attr("id");
if ($(this).is(":checked")) {
$("." + divId).hide();
}
else{
$("." + divId).show();
}
});
$("input[type=checkbox]").change();
});
编辑:尝试使用更改事件。 See this example.
答案 1 :(得分:0)
您需要在加载页面时执行代码,以及发生单击事件时,请尝试以下操作:
$("input[type=checkbox]")
.each(setDivs) // on load
.change(setDivs); // on click
function setDivs() {
divId = $(this).attr("id");
if ($(this).is(":checked")) {
$("." + divId).hide();
}
else {
$("." + divId).show();
}
}
您还会注意到我如何将else if
条款修改为else
,并将click
事件更改为change
以允许用户选择使用的选项他们的键盘也是。
答案 2 :(得分:0)
自由修改你的代码。
$(document).ready(function() {
function toggleDiv() {
var $this = $(this);
$("." + $this.attr('id'))[$this.is(':checked') ? 'hide' : 'show']();
}
$('input:checkbox').each(toggleDiv).click(toggleDiv);
});