为了账号安全,请及时绑定邮箱和手机立即绑定

在属性匹配的范围(和数据属性)中访问此元素

在属性匹配的范围(和数据属性)中访问此元素

不负相思意 2023-10-30 20:16:59
我有以下片段:$(".tab").on("click", function() {  var tabID = $(this).attr("data-item");  $('.image[data-item = ' + tabID + ']').addClass('active');});<div class="tabbedContent">  <div class="imageWrapper">     <div class="image" data-item="item--1">      <!-- image -->     </div>     <div class="image" data-item="item--2">      <!-- image -->     </div>  </div>  <div class="tabs__rapper">    <div class="tab" data-item="item--1" >      <!-- tab text here -->    </div>    <div class="tab" data-item="item--2" >      <!-- tab text here -->    </div>  </div>  </div>基本上,当用户单击选项卡时,它会显示分配给该部分的图像(它们通过 链接data-item)。但是,具有以下条件:$('.image[data-item = ' + tabID + ']').addClass('active');如果我在一页上有两个这样的选项卡式模块(如果我在同一页上有两个,则它们data-items将相同,因为它们都从 1 开始),那么两个部分中的图像都会发生变化。我想做的是使用 更改范围内的选项卡this。但是,我不确定如何做到这一点,我已经尝试过(需要这样的东西):$(this + '[data-item = '+tabID+']').addClass('active');我离得还远吗?
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

由于.tab范围位于 内部.tabbedContent

$(this).parent('.tabs__rapper').parent('.tabbedContent').find('.image[data-item='+tabID+']').addClass('active');



查看完整回答
反对 回复 2023-10-30
?
慕森卡

TA贡献1806条经验 获得超8个赞

假设.imageis inside .tab,您可以使用以下方法更改范围内的选项卡:

$(".tab").on("click", function() {
  var tabID = $(this).attr("data-item");
  $(this).closest('.tabbedContent').find('.image[data-item='+tabID+']').addClass('active');
});


查看完整回答
反对 回复 2023-10-30
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

声明事件时尝试停止事件传播:


$(".tab").on("click", function( event ) {

  event.stopPropagation();

  var tabID = $(this).attr("data-item");

  $('.image[data-item = ' + tabID + ']').addClass('active');

});


查看完整回答
反对 回复 2023-10-30
  • 3 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信