从数组中获取元素属性

时间:2018-02-24 23:03:53

标签: javascript jquery arrays

目标是通过将滑块链接到某个页面来在页面上创建多个滑块。必须通过单击或悬停滑块锚点来激活滑块。 sliderList将是一个使这个过程更容易的数组,所以我不必在configs js文件上手动相互链接。

我需要从数组内部的元素中获取属性值。在这种情况下, holder 是我想从当前数组元素中提取属性值的数组。我试过这样做:

var holder = $('[slider-select]');

for (var i = 0; i < holder.length; i++) {
    var sliderList = $('[slider-target='
        +holder[i].attr('slider-select')
        +']');
}

看起来 + holder [i] .attr('slider-select')无效。我正在学习JavaScript / Jquery,即使它完全有意义,也会出现问题,这很疯狂,哈哈。如果我不够清楚,请告诉我。

3 个答案:

答案 0 :(得分:1)

Reset包含一个普通的DOM元素,但您尝试在其上使用jQuery holder[i]方法。您需要将其转换为jQuery对象attr(或者在DOM元素上使用本机$(holder[i])):

getAttribute
var holder = $('[slider-select]');

for (var i = 0; i < holder.length; i++) {
  // Splitting this up a bit just to make it more readable:
  var val = $(holder[i]).attr('slider-select'); // instead of holder[i].attr(...)
  var sliderList = $('[slider-target="' + val + '"]');

  // confirm we got the element:
  console.log(sliderList.text());
}

答案 1 :(得分:1)

函数attr是jQuery的内置函数,它是函数getAttributesetAttribute的缩写。

在您的情况下,您希望这样做:

var holder = $('[slider-select]');

for (var i = 0; i < holder.length; i++) {
    var test = holder[i];
    var sliderList = $('[slider-target=' + holder[i].getAttribute('slider-select') + ']');
}                                                    ^

一个好方法是使用jQuery内置函数,所以你可以使用它:

$('[slider-select]').each(function() {
    var sliderList = $('[slider-target=' + $(this).attr('slider-select') + ']');                  
});                                                ^ 

资源

答案 2 :(得分:0)

attr方法不是JS元素对象的函数。您需要将其包装在jquery中以检索属性值。例如

$(holder[i]).attr("slider-select")