获取在jQuery.each()中激活的滑块元素的ID

时间:2012-08-11 14:17:03

标签: jquery jquery-ui

我在容器div中定义了许多滑块,如

  <div id="opacitySlider" class='slider'>
    <div class="sliderText">Fade Opacity</div>
    <div id="fadeVal"></div>
  </div>

还有更多

它们由定义为

的jQuery UI slider()功能控制
$(".slider").each(function(e){
  $(this).slider({
    value: 50,
    orientation: 'horizontal',
    animate: true,
    range: 'min',
    slide: function(e, ui){
      console.log($(e).id);
      console.log($(this).id;
    }
  });
});

我想要做的是使用相关滑块的值更新滑块值div

控制台日志记录语句都返回undefined。我需要知道滑块的ID,它触发事件以更新正确的div元素。我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

.each()有两个参数,第一个是索引,第二个是元素:

$(".slider").each(function(i, e) {
    $(e).slider({
        value: 50,
        orientation: 'horizontal',
        animate: true,
        range: 'min',
        slide: function(e, ui) {
            console.log(this.id); //new scope
        }
    });
});​

仅执行$(".slider").each(function(e) {...}时,e将是索引而不是元素,因此您尝试获取数字0,1,2等的ID。

答案 1 :(得分:0)

应该是 $(this).attr('id');$(e).attr('id');

答案 2 :(得分:0)

试试这个:

$(".slider").each(function(e){

  var curSlider = $(this);

  $(this).slider({
    value: 50,
    orientation: 'horizontal',
    animate: true,
    range: 'min',
    slide: function(e, ui){

      console.log(curSlider.attr('id'));

    }
  });
});

答案 3 :(得分:0)

使用idthis的{​​{1}}属性:

e.target

jsFiddle