嗨,我正在尝试构建一个小片段,以告诉我给定的父元素是否具有子元素,我仍在调试东西,以了解Jquery和JS的一般工作原理。这是我到目前为止的内容:

$(document).ready(function(){

                    var str_dv = $('#la');
                    $('p , span').on('click' , function(e){


                        // console.log( str_dv,e.target , str_dv.has(e.target), !str_dv.has(e.target).length)
                        if (str_dv.has(e.target).length > 0) {
                            console.log('has the element');
                        }

                    });
            });


我只是好奇,但是当我说parent.has(child)时,如果找到孩子,将返回has();如果找不到孩子,它将返回什么?

我向SO提出了类似的问题,但找不到一个问题,甚至找不到Jquery文档的问题。

如果我看一下Jquery源,我会看到:

"has": markFunction(function( selector ) {
            return function( elem ) {
                return Sizzle( selector, elem ).length > 0;
            };
        }),


这对我完全没有意义。

所以再次回到我的问题,has()返回什么? (何时找到传递的元素,以及何时找不到)?

最佳答案

has()返回什么?

根据文档,


将匹配的元素集减少为后代与选择器或DOM元素匹配的元素。


因此,通过具有子元素(其选择器已传入)的元素对匹配集合中的元素进行了过滤。

例如,选择器是:

$("li").has("ul");


这将仅选择其中包含ul元素的li元素。

Demo For has selector

关于jquery - 找到元素时,has()返回的确切内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28758832/

10-14 13:53
查看更多