var subtypechecked = function() {
var subtype = $(this);
var evidence = subtype.parent().parent().parent().children("input[name^='Regression.']").fadeOut();
alert(evidence.context.name);
};
$("input[type=checkbox]").on("click", subtypechecked);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="row">
<div class="panel panel-default"></div>
<div class="panel-heading clearfix"></div>
<div style="padding-left:15px;padding-top:5px"></div>
<div class="panel-body" style="padding-top:5px;padding-bottom:5px">
<label class="checkbox-inline">
<input type="checkbox" value="1" name="Repression">Repression
</label>
<label class="checkbox-inline">
<label class="checkbox-inline">
<label class="checkbox-inline">
</div>
<div class="panel-body" style="padding-top:5px;padding-bottom:5px">
<label class="checkbox-inline">
<input type="checkbox" value="1" name="Repression.Confirmed">Repression.Confirmed
</label>
<label class="checkbox-inline">
<input type="checkbox" value="2" name="Unknown.Confirmed">Unknown.Confirmed
</label>
<label class="checkbox-inline">
<label class="checkbox-inline">
</div>
</div>
&#13;
我希望所有名称的元素都以&#34; Repression开头。&#34;。但是,我检查了萤火虫。 &#34;证据&#34;是我点击的按钮。这毫无意义。
答案 0 :(得分:1)
http://api.jquery.com/children/
.children()方法与.find()的区别仅在于.children() 在.sind()可以遍历时沿DOM树向下移动一个级别 在多个级别选择后代元素(孙子, 等)。
你正在.children
div上执行.row
,。children只查看直接desendants,你想要使用.find,它会在dom树中更深入地查看元素。
var evidence = subtype.parent()
.parent()
.parent()
.find("input[name^='Repression.']").fadeOut();
您还使用名称压缩而非回归
答案 1 :(得分:0)
您的问题是context
。引用jQuery doc,上下文是:
最初传递给jQuery()的DOM节点上下文;如果没有传递,则上下文可能是文档。
因此它将返回传递给jQuery的原始DOM,这是单击的复选框,因为您的选择器找不到与您的查询匹配的任何元素。
您可以改为使用parents
和find
:
var subtypechecked = function() {
var subtype = $(this);
var evidence = subtype.parents('.row')
.find("input[name^='Repression.']");
alert(evidence.attr('name'));
// fadeOut the parent label to hide the text, as requested
evidence.parent().fadeOut();
};
$("input[type=checkbox]").on("click", subtypechecked);