首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jQuery中选择特殊的div

如何在jQuery中选择特殊的div
EN

Stack Overflow用户
提问于 2016-09-20 17:36:51
回答 4查看 98关注 0票数 0

我的HTML代码看起来是这样的。(我有一种特殊的无线电输入设计)

代码语言:javascript
复制
<div class="area" id="area-1">
 <div class="input">
  <input type="radio" class="active-radio">
  <input type="radio" class="no-active-radio>
  <input type="radio" class="no-active-radio>
 </div>
</div>
<div class="area" id="area-2">
 <div class="input">
  <input type="radio" class="no-active-radio>
  <input type="radio" class="active-radio">
  <input type="radio" class="no-active-radio>
 </div>
</div>

当我点击"#area-1“中的收音机时,我想删除"area-1”中的其他收音机中的"active- radio“类,而不是"area-2”中的类。

有很多div .area,所以我不想每次在脚本中指定div id。

联署材料:

代码语言:javascript
复制
var thisArea = this.closest(".area");
$(thisArea + " .input input[type='radio']").parent().removeClass('active-radio').addClass('no-active-radio');
$(this).addClass('active-radio').removeClass('no-active-radio');

基本上,我想选择所有的.input,其中包含与单击的收音机相同的.area中的无线电输入。

我认为问题出在这部分:

代码语言:javascript
复制
thisArea + " .input input[type='radio']"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-20 17:41:08

不能连接jQuery对象和字符串。使用.find()查找与选择器匹配的元素。另外,active-radio类不是在单选按钮的父级上,而是在单选按钮本身上,所以不要使用.parent()

代码语言:javascript
复制
thisArea.find(".input :radio").removeClass('active-radio').addClass('no-active-radio');
票数 1
EN

Stack Overflow用户

发布于 2016-09-20 17:41:38

就像这样:

代码语言:javascript
复制
$(thisArea)
  .find(".input input[type='radio']")
  .parent()
  .removeClass('active-radio')
  .addClass('no-active-radio');
票数 0
EN

Stack Overflow用户

发布于 2016-09-20 17:49:03

将搜索上下文限制在单击元素上。

代码语言:javascript
复制
Array
  .from(document.querySelectorAll('.area'))
  .forEach( a => a.addEventListener('click', clickFun, false) );


function clickFun(e) {
  Array
    .from(e.target.querySelectorAll('[type=radio]'))
    .forEach( a => {
      a.classList.toggle('no-active-radio');
      a.classList.toggle('active-radio');
    })
  };
代码语言:javascript
复制
.area { 
  display:block;
  background-color:#a0a0a0;
  padding:20px;
  margin:20px;
 }

input[type=radio].active-radio { 
  zoom:2;
}
代码语言:javascript
复制
<div class="area" id="area-1">
 <div class="input">
  <input type="radio" class="active-radio">
  <input type="radio" class="no-active-radio">
  <input type="radio" class="no-active-radio">
 </div>
</div>
<div class="area" id="area-2">
 <div class="input">
  <input type="radio" class="no-active-radio">
  <input type="radio" class="active-radio">
  <input type="radio" class="no-active-radio">
 </div>
</div>

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

https://stackoverflow.com/questions/39600460

复制
相关文章

相似问题

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