首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery打开最近的容器div

使用jquery打开最近的容器div
EN

Stack Overflow用户
提问于 2014-03-10 18:22:00
回答 2查看 834关注 0票数 0

我有个问题。我有这个html。在阅读框中,有很多内容。和我有更多。阅读更多-打开链接和阅读更多的框在网页上。

代码语言:javascript
复制
<p>
<a href="http://staging.triple-b-it.nl/requirements-management/" title="Lees verder" class="readmore-open">Lees verder</a>
</p>

<div class="readmore-box">

</div>

现在是我的问题。单击..readmore open链接时。第一个阅读更多的盒子,然后什么来了,必须展示。我有这个剧本。我做错了什么。

代码语言:javascript
复制
$('.readmore-open').click(function(e){
    $(this).closest('.readmore-box').toggleClass('active');
})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-10 18:24:36

代码语言:javascript
复制
$('.readmore-open').click(function(){
    $(this).closest('p').next('.readmore-box').toggleClass('active');
});

您的DOM遍历有点错误。

票数 2
EN

Stack Overflow用户

发布于 2014-03-10 18:25:59

.closest()只查找当前选定节点的祖先的DOM树。在这种情况下,.readmore-box不是祖先,也不会被找到。

目前,按照您构建HTML的方式,您需要找到父级,然后查找下一个同级。您可能会考虑对HTML进行一些重构,以使DOM遍历更加可靠。例如,如果具有与兄弟姐妹级别相同的元素,则可以使用.next()查找下一个同级元素。

例如,通过将类声明向上移到包含<p>。你可以这样做:

HTML:

代码语言:javascript
复制
<p class="readmore-open">
    <a href="http://staging.triple-b-it.nl/requirements-management/" title="Lees verder">Lees verder</a>
</p>
<div class="readmore-box">...</div>

Javascript:

代码语言:javascript
复制
$('.readmore-open').click(function(e){
    $(this).next('.readmore-box').toggleClass('active');
})

另一种方法是提供一个您可以依赖的共同祖先。

HTML:

代码语言:javascript
复制
<div class="readmore">
    <p>
        <a href="http://staging.triple-b-it.nl/requirements-management/" title="Lees verder" class="readmore-open">Lees verder</a>
    </p>
    <div class="readmore-box">...</div>
</div>

Javascript:

代码语言:javascript
复制
$('.readmore-open').click(function(e){
    $(this).closest('.readmore').find('.readmore-box').toggleClass('active');
})

第二种方法可能更灵活,因为您几乎可以在该共同祖先中的任何地方(在链接之前,在与链接不同的层次结构级别上,等等)使用.readmore-box

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22308194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档