Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按以父元素开头的类查找元素_Javascript_Jquery - Fatal编程技术网

Javascript 按以父元素开头的类查找元素

Javascript 按以父元素开头的类查找元素,javascript,jquery,Javascript,Jquery,像这样的设置 var o = $(' <div class="a a-1"> <div class="b"></div> <div class="c"> <div class="a a-2"></div> </div> <div class="a a-3"></div>

像这样的设置

var o = $('
    <div class="a a-1">
        <div class="b"></div>
        <div class="c">         
            <div class="a a-2"></div>
        </div>
        <div class="a a-3"></div>
    </div>
');
var o=$('
');
如何查找所有类“
a
”元素

当我尝试
o.find('.a')
时,返回的元素.a-2和.a-3没有父类(.a-1)。因此,我还尝试添加了一个包装器
“…”
,但由于我使用的是ajax,它会扰乱前端渲染

有什么想法吗

增编: 有人建议与他相似。除了需要捕获一个元素的问题之外,没有问题。在这种情况下,
.filter()
就足够了。问题是“如何获取一个…”在这种情况下,我需要所有这些节点。

对于jq 1.8使用>,它还包括当前的目标节点:

var o=$('');
log(“带有andSelf.a:+o.find(“.a”).andSelf()长度的元素数);
log(“带有addBack.a:+o.find(“.a”).addBack().length的元素数)

对于jQuery 1.8及更高版本,您可以使用

在jQuery 1.8之前,请使用
和self()
(现在已弃用):


“查找”在元素集中查找,因此您可以执行以下操作:

var o = $('
<div class="a a-1">
    <div class="b"></div>
    <div class="c">         
        <div class="a a-2"></div>
    </div>
    <div class="a a-3"></div>
</div>
');

你可以在这里找到答案:

(复制到这里)


下面是一个.find2(),它将同时查找根元素和子元素:

$.fn.find2 = function(selector) {
  return this.filter(selector).add(this.find(selector));
};
使用此功能,您可以执行以下操作:

var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs
var html='';
var el=html.find2(“.one”);//将匹配两个div
以下是关于它的更多信息:


.find()
在子节点中搜索,不包括从中发出查询的当前节点将此添加到您的代码中
o.find('.a').andSelf('.a')
此操作的可能重复项。但是由于我截取了ajax,这会把输出搞得一团糟,因为不同类型的输出正在通过。。。我认为这就是为什么要使用
var o=…
的原因,但是如果您想使用它,可以在呈现Ajax数据的DOM元素中附加它,就像下面的
$(element).append(o.html()),这样我们添加的容器div将不会被呈现。它将包括self对象,即使它没有您的类。在andself中指定刚尝试过代码的类,.andself()在jQuery v3.2中不起作用是的,很抱歉,在他们的文档中,它在3.0中被弃用,因此,我已经更新了两个版本的答案:)thnxCorrect。现在我对你的回答和评论投赞成票。谢谢。thnks:),也请不要添加指向其他答案的答案。当你有更多的代表时,你可以将文章标记为重复的,现在,只是不要回答Liam是对的。而且,你是对的。刚刚尝试了你的代码
o.filter('.a')。add(o.find('.a'))
它可以工作。缺点是它比人们所接受的要长一点,并且作为一种功能呈现,在本例中,它是一种过度杀伤力。
o = o.appendTo($('<div></div>'));
o.find('.a')...
$.fn.find2 = function(selector) {
  return this.filter(selector).add(this.find(selector));
};
var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs