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

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

jquery closest的疑问

2016-06-02 15:57:07 1592 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
相关问答

1

回答

jquery中的ajax的请求出现问题

2016-07-14 16:58:18 2055浏览量 回答数 1

1

回答

jquery mobile ajax 请求,弹出提示框

2016-07-05 17:07:35 1924浏览量 回答数 1

1

回答

jquery ajax json前台解析失败

2016-07-04 18:39:14 1811浏览量 回答数 1

1

回答

寻找jQuery中ajax方法的重载或别名的解决方法

2016-07-05 09:58:28 1750浏览量 回答数 1

1

回答

关于Jquery ui tabs插件的ajax调用

2016-07-05 10:18:48 2055浏览量 回答数 1

1

回答

用jquery的ajax提交表单到servlet参数乱码

2016-07-05 10:29:04 1667浏览量 回答数 1

1

回答

Jquery ajax json 不执行success的原因

2016-06-23 11:29:58 1928浏览量 回答数 1

1

回答

求一份浏览器中html css javascript jquery ajax的渲染顺序与原理!!

2016-06-16 16:59:29 2351浏览量 回答数 1

1

回答

jquery ajax不能上传图片

2016-06-14 13:20:15 2145浏览量 回答数 1

1

回答

关于基于jquery的ajax数据传输的问题

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