jquery closest的疑问-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

jquery closest的疑问

2016-06-02 15:57:07 1568 1

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才对。。。谁可以帮忙解释下,谢谢!

取消 提交回答
全部回答(1)
  • 吴孟桥
    2019-07-17 19:25:06

    你指定了上下文,肯定是在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 )

    0 0
相关问答

2

回答

jquery选择器无效

2016-07-14 16:11:08 2578浏览量 回答数 2

1

回答

在jquery的选择器的写法上有点疑问

2016-07-13 17:07:01 1428浏览量 回答数 1

1

回答

Jquery 选择器问题!!!!!

2016-07-08 10:54:17 1349浏览量 回答数 1

1

回答

jquery选择器的问题

2016-07-06 15:57:15 1491浏览量 回答数 1

1

回答

关于Jquery选择器方面的问题

2016-06-01 01:15:29 1843浏览量 回答数 1

2

回答

jquery弹出框选择器的问题?

2016-05-31 08:56:42 1857浏览量 回答数 2

1

回答

关于jQuery选择器的问题

2016-05-30 10:48:09 1686浏览量 回答数 1

1

回答

一个关于 JQuery选择器的问题!

2016-05-27 09:35:15 1761浏览量 回答数 1

1

回答

Jquery选择器使用的问题

2016-03-18 14:09:53 1515浏览量 回答数 1

1

回答

jQuery选择器问题,请大神赐教

2016-03-17 11:54:34 1439浏览量 回答数 1
+关注
0
文章
2240
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载