首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅将jquery应用于单击的元素子级

仅将jquery应用于单击的元素子级
EN

Stack Overflow用户
提问于 2018-03-01 15:50:38
回答 6查看 67关注 0票数 1

我编写了一个非常简单的脚本来切换div,它工作得很好。问题是,由于我使用的选择器,如果我有更多的项目,我将脚本应用于所有项目,并对其中任何一个项目进行单击。我想要实现的是,当我点击一个按钮时,只有它的文本会出现,而其他按钮不会出现。

代码语言:javascript
复制
$('.wrapper-button').click(function(){
	$('.wrapper p').toggle();
});
代码语言:javascript
复制
*{
  padding:0;
  margin:0;
  box-sizing:border-box;
}

.wrapper-text{
  
  background-color:salmon;
}

.wrapper-button{
  background-color:darkred;
  padding:10px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='wrapper'>
<div class='wrapper-button' id="btn-1">
  Click me
</div>
<p class='wrapper-text' id="txt-1">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>

<div class='wrapper'>
<div class='wrapper-button' id="btn-2">
  Click me
</div>
<p class='wrapper-text' id="txt-2">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>

我在想,也许我可以为下一项应用数字递增的类,但当我试图选择合适的选择器时,我被卡住了。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-03-01 15:55:12

使用jquery siblings是其中一种方式。

代码语言:javascript
复制
$('.wrapper-button').click(function() {
  $(this).siblings('p.wrapper-text').toggle();

});
代码语言:javascript
复制
* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.wrapper-text {
  background-color: salmon;
}

.wrapper-button {
  background-color: darkred;
  padding: 10px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='wrapper'>
  <div class='wrapper-button' id="btn-1">
    Click me
  </div>
  <p class='wrapper-text' id="txt-1">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
</div>

<div class='wrapper'>
  <div class='wrapper-button' id="btn-2">
    Click me
  </div>
  <p class='wrapper-text' id="txt-2">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
</div>

票数 2
EN

Stack Overflow用户

发布于 2018-03-01 15:53:55

您可以通过两种方式完成此操作:

首先,使用.find()查找子元素:

代码语言:javascript
复制
$('.wrapper-button').click(function(){
    $(this).parent(".wrapper").find('.wrapper p').toggle();
});

或者,为选择器提供上下文

代码语言:javascript
复制
$('.wrapper-button').click(function(){
    $('.wrapper p', $(this).parent(".wrapper")).toggle();
});
票数 4
EN

Stack Overflow用户

发布于 2018-03-01 15:54:58

您将切换所有的p,它们是.wrapper-button的兄弟元素。相反,您只需要将当前单击的元素的兄弟元素作为目标:

代码语言:javascript
复制
$('.wrapper-button').click(function() {
  $(this).siblings('p').toggle();
});
代码语言:javascript
复制
* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.wrapper-text {
  background-color: salmon;
}

.wrapper-button {
  background-color: darkred;
  padding: 10px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='wrapper'>
  <div class='wrapper-button' id="btn-1">
    Click me
  </div>
  <p class='wrapper-text' id="txt-1">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
</div>

<div class='wrapper'>
  <div class='wrapper-button' id="btn-2">
    Click me
  </div>
  <p class='wrapper-text' id="txt-2">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
</div>

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

https://stackoverflow.com/questions/49044947

复制
相关文章

相似问题

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