Javascript 如何在JQuery中显示和隐藏使用“最近”和“查找”方法选择的元素?

Javascript 如何在JQuery中显示和隐藏使用“最近”和“查找”方法选择的元素?,javascript,jquery,find,show-hide,closest,Javascript,Jquery,Find,Show Hide,Closest,我有带复选框和文本区的表单。如果复选框为复选框,我想显示文本区域,如果不隐藏。以下是我的例子: $(document).on('click','dc checkbox',setCheckboxVal); 函数setCheckboxVal(){ var fldCheckbox=$(此值); var fldComment=$(this.nexist('div')。find('.dc comment'); 控制台日志(fldComment); 如果(fldCheckbox.is(':checked'

我有带复选框和文本区的表单。如果复选框为复选框,我想显示文本区域,如果不隐藏。以下是我的例子:

$(document).on('click','dc checkbox',setCheckboxVal);
函数setCheckboxVal(){
var fldCheckbox=$(此值);
var fldComment=$(this.nexist('div')。find('.dc comment');
控制台日志(fldComment);
如果(fldCheckbox.is(':checked')){
fldCheckbox.val(1);
fldComment.show();
}否则{
fldCheckbox.val(0);
fldComment.hide();
}
}
.dc注释{
显示:无;
}

复选框1
评论:
复选框2
评论:
复选框3
评论:
$(this).closest('div')
查找第一个父div,在本例中是带有类
复选框的父div
-
。查找(…)
然后查找该div的子div。由于
div class=checkbox
div没有
div class=dc注释
作为其子项,因此它找不到它

.dc comment
.checkbox
是同级(同一级别/同一父级)

更改为
.next()
.nextAll(“.dc comment”).first()

不要使用
.next(“.dc comment”)
,除非您知道它会做什么,因为它可能会中断(仅当它匹配时获取下一个,而不是匹配的下一个)

更新的代码段:

$(document).on('click','dc checkbox',setCheckboxVal);
函数setCheckboxVal(){
var fldCheckbox=$(此值);
var fldComment=$(this).closest('div').nextAll('.dc comment').first();
//控制台日志(fldComment);
如果(fldCheckbox.is(':checked')){
fldCheckbox.val(1);
fldComment.show();
}否则{
fldCheckbox.val(0);
fldComment.hide();
}
}
.dc注释{
显示:无;
}

复选框1
评论:
复选框2
评论:
复选框3
评论:

仅选中一个复选框时,您的代码将显示所有注释字段。我只需要在选中的复选框下显示textarea。希望这有意义。那么
nextAll().first()
.next()
有什么不同呢?我在试着理解你的解决方案。谢谢大家!
.next()
获取下一个兄弟姐妹,不管它是什么
.next(“.cls”)
仅当它是
class=cls
时才获取下一个,否则什么也得不到
.nextAll(“.cls”)
查找以下所有与cls匹配的同级,然后使用
.first()
将其限制为第一个。这样,如果在代码> >复选框< /代码>和<代码> DC评论< /代码>,代码> > n>()>代码>,将得到中间的一个,<代码>。下一步(“.dc注释”)将不给出任何内容和<代码>。NExTALL(“.DC注释”)。在您的情况下,它们直接挨着彼此
。next()
就足够了。这很有意义。感谢您花时间解释您的解决方案。