Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 jQuery仅获取此元素的父同级_Javascript_Jquery_Traversal - Fatal编程技术网

Javascript jQuery仅获取此元素的父同级

Javascript jQuery仅获取此元素的父同级,javascript,jquery,traversal,Javascript,Jquery,Traversal,我不知道怎么写这个 请参阅我的标记结构,它在一页上重复多次 <div class="module"> <div class="archive-info"> <span class="archive-meta"> open </span> </div> <div class="archive-me

我不知道怎么写这个

请参阅我的标记结构,它在一页上重复多次

<div class="module">    
    <div class="archive-info">
        <span class="archive-meta">
            open
        </span>                         
    </div>
    <div class="archive-meta-slide">
    </div>                              
</div>
有人能帮忙吗

谢谢 乔希

这真的很接近。这实际上是说“使用类
archive meta slide
查找元素,这些元素是该元素父级的同级的后代”。您想说“查找具有类
存档元幻灯片的元素,这些元素是该元素父级的同级元素”。为此,请在
同级调用上使用选择器:

$(this).parent().siblings(".archive-meta-slide")  
请注意,如果标记始终是此结构,则您甚至可以执行
$(this).parent().next()

请参阅jQuery API:

使用

$(this).parent().parent().children('.archive-meta-slide')
这与搜索顶级模块div的子级一样好

$(this.parent().parent())

这是你的上衣

<div class="module">

使用
$(this).closest(“.module”)
查找发生单击的父模块

您可能还希望在制作动画后使用完成功能更改文本

.closest()
的好处在于,它只需尽可能远地查找父链,直到找到具有正确类的对象。如果其他人稍微更改了您的HTML设计(在父链中添加另一个div或span或类似的内容),那么这比使用特定数量的
.parent()
引用要容易得多

您也可以将其干燥一点,然后制作一个通用功能:

function metaToggleCommon(obj, height, text) {
    var $slide = $(obj).closest(".module").find(".archive-meta-slide");
    $slide.animate({ height: height}, 300, function() {
        $slide.html(text);
    });
}

var $metaButton = $("span.archive-meta");
$metaButton.toggle(
    function() {metaToggleCommon(this, "0", "close")}, 
    function() {metaToggleCommon(this, "43px", "open")}
);
尝试使用指定的选择器返回到父级之前返回的选项

$(this).closest(".module")

你在找

$(this).parent().next('.archive-meta-slide')
如果#模块的结构发生变化,这可能会更加健壮:

$(this).closest('#module').children('.archive-meta-slide')
使用

正如jfriend00所解释的那样,
closest()
的使用更加健壮。
$(this).closest(".module")
$(this).parent().next('.archive-meta-slide')
$(this).closest('#module').children('.archive-meta-slide')
jQuery(this).closest('.prev-class-name').find('.classname').first()