jquery中的closest方法可以用来查找制定的父类元素,并可以设置查询的上下文context,不过如果context正好是closest找的父类的话,貌似会被过滤掉,不知道是否是jquery的问题还是我理解有问题。代码如下:
jquery:
var contextElem = document.getElementById("row1");
$("img").closest(".drow",contextElem).each(function(index,element){
console.log("Element:" + element.tagName + " " + element.id + " " + element.className);
});
<div id="oblock">
<div class="dtable">
<div id="row1" class="drow">
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\aster.png"/><label for="aster">aster:</label>
<input name="aster" value="0" required>
</div>
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\daffodil.png"/><label for="daffodil">daffodil:</label>
<input name="daffodil" value="0" required>
</div>
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\rose.png"/><label for="rose">rose:</label>
<input name="rose" value="0" required>
</div>
</div>
<div id="row2" class="drow">
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\peony.png"/><label for="peony">peony:</label>
<input name="peony" value="0" required>
</div>
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\primula.png"/><label for="primula">primula:</label>
<input name="primula" value="0" required>
</div>
<div class="dcell">
<img src=".\精通jQurery(2版)源代码\Chapter 06\snowdrop.png"/><label for="snowdrop">snowdrop:</label>
<input name="snowdrop" value="0" required>
</div>
</div>
</div>
</div>
输出的结果是:elementId 是row2;
安jquery的描述应该是返回row1才对。。。谁可以帮忙解释下,谢谢!
你指定了上下文,肯定是在context下找了,你看源代码就清楚了
var pos = jQuery.expr.match.POS.test( selectors ) ?
jQuery( selectors, context || this.context ) : null;
return this.map(function( i, cur ) {
while ( cur && cur.ownerDocument && cur !== context ) {
if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
return cur;
}
cur = cur.parentNode;
}
return null;
});
看了下源代码,jQuery.expr.match.POS内容为/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)(?![^\[]*\])(?![^\(]*\))/
,意思就是selectors为这些选择器的时候才会在context下找(不包括context,看while中cur !== context
才会return DOM,否则是null),否则就是排除你传入的context,你看map里面的while语句 while ( cur && cur.ownerDocument && cur !== context )
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。