【问题标题】:How to target a a specific div on a page with the same class as another如何在与另一个具有相同类的页面上定位特定 div
【发布时间】:2014-06-16 13:33:20
【问题描述】:

我正在创建一个基本滑块来在页面上显示产品。我想在一个页面上使用多个滑块。但很明显,当我执行该函数时,它会影响所有滑块,因为它们具有相同的类名。但是他们需要相同的css类。滑块也将具有不同的值,例如产品数量。

我想在一个页面上放置多个滑块,但该功能仅影响单击的滑块。

JsFiddle

<div class="slider-wrapper">
   <div class="slider-controls>
       <div class="prv control"> < </div>
       <div class="nxt control"> > </div>
   </div>
   <div class="slider">
      <!-- SLIDE 1--><div class="slide"><img></div>
      <!-- SLIDE 1--><div class="slide"><img></div>
      <!-- SLIDE 1--><div class="slide"><img></div>
      <!-- SLIDE 1--><div class="slide"><img></div>
   </div>
</div>

JS

$('.nxt').click(function){
   .slider{move left}
}

    $('.prv').click(function){
   .slider{move right}
}

JsFiddle

【问题讨论】:

  • 将按钮存储为变量,它们将用于每个滑块实例
  • 你试过$(this).closest('.slider-wrapper').find('.slider')....
  • 我已将它们作为变量放在 jsfiddle 中,只是在单击滑块时会进行计算以确定每次滑块必须移动多少

标签: javascript jquery jquery-selectors slider


【解决方案1】:

我认为问题在于您对所有 div 都使用 class="slide"。 使用不同的 ID 标识符

【讨论】:

    【解决方案2】:

    你有各种各样的选择。

    1. 添加一个附加类唯一标识每个滑块(元素可以有多个类)。

    2. 使用ids 唯一标识他们。

    3. 使用它们的内容来唯一标识它们(例如,大概每个img是不同的)。

    4. 按位置执行,通过.eq function

      var firstSlider = $(".slider").eq(0);
      var secondSlider = $(".slider").eq(1);
      

      ...或:eq pseudo-selector:

      var firstSlider = $(".slider:eq(0)");
      var secondSlider = $(".slider:eq(1)");
      

      ...或者通过抓取所有这些并只是索引到集合中:

      var sliders = $(".slider");
      var firstSlider = $(sliders[0]);
      var secondSlider = $(sliders[1]);
      
    5. 在响应其中一个滑块上的事件时,如果您需要知道它与同级滑块的关系,请使用index function

      $(".sliders").on("some-event", function() {
          // Which slider am I?
          var sliderIndex = $(this).index();
      });
      

    (在上面,我并不是在字面上建议为滑块使用单独的变量,只是使用变量来显示您将从每种机制中获得哪个变量。)

    【讨论】:

    • 我将在内容管理系统中使用它,因此只会在用户需要时添加滑块,因此我将无法为每个单独的类添加单独的类或知道它的位置,尽管它会如果我把工作。 $('.nxt').click(function(){var pos = $(this).parent().eq} 或类似的东西
    • @navigator:我认为你的评论在那里被截断了。如果你的意思是,你怎么知道你在事件处理程序中处理的是哪个滑块,默认情况下this 将是事件被钩住的 DOM 元素。 (请参阅我的示例#5,了解在这方面可能使用的this,但如果您只需要使用滑块,则不需要index,只需this 和[如果您需要jQuery 功能]@ 987654338@.)
    • @navigator:重新编辑您的评论(完成截断位):我认为您正在寻找上面的#4。您可能需要对其进行一些限制,例如 $(".nxt").click(function() { var secondSlider = $(this).closest(".slider-wrapper").find(".slider").eq(1); });
    • 我将如何声明相对于该特定滑块的变量?检查jsfiddle.net/32TU5
    • @navigator:参见上面的评论,我们在.slider-wrapper 中找到.nxt 所在的滑块。
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2021-07-19
    • 2022-12-03
    • 1970-01-01
    • 2013-11-13
    • 2022-07-27
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多