el_*_*ick 30 jquery jquery-selectors
我有这个HTML代码:
<tr>
<td><input type="checkbox" class="chk" /></td>
<td><div class="disabled">text to hide 1</div></td>
<td><div class="disabled">text to hide 2</div></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery来隐藏所有class="disabled"项目:
$("div.disabled").hide() ;
Run Code Online (Sandbox Code Playgroud)
当我单击同一行(tr)中的复选框时,我想显示禁用的div.我试过了
$("input.chk").click(function(){
$(this).parent().parent().(".disabled").show();
}) ;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
Nic*_*ver 66
使用.closest()和.find(),像这样:
$("input.chk").click(function(){
$(this).closest('tr').find(".disabled").show();
});
Run Code Online (Sandbox Code Playgroud)
你当前的代码几乎可以工作,你需要一个,.find()但是这样:
$(this).parent().parent().find(".disabled").show();
Run Code Online (Sandbox Code Playgroud)
如果你有很多像这样的行,请使用.delegate(),就像这样:
$("table").delegate("input.chk", "click", function(){
$(this).closest('tr').find(".disabled").show();
});
Run Code Online (Sandbox Code Playgroud)
.delegate()而是将一个处理程序绑定到表中,以便将所有input.chk元素绑定到.如果您要启用/禁用,请使用change以及.toggle()上述内容,如下所示:
$("table").delegate("input.chk", "change", function(){
$(this).closest('tr').find(".disabled").toggle(this.checked);
});
Run Code Online (Sandbox Code Playgroud)
这样,如果它被检查,他们会显示,如果不是,他们会隐藏.