如何获取变量中html元素属性的值?

时间:2017-08-01 13:24:46

标签: javascript jquery

我将此代码用于get data-isAirTour属性,但始终未定义。

var tours = $('#WrapTours').find('div.tour');
  var toursTmp;
      var length = tours.length;
                    for (var i = 0; i < length; i++) {
                    if (tours.eq(i).value.data('isForeignTour') == isForeignTour) {
                        toursTmp.push(tours[i]);
                    }
                }

HTML:

<div class="col-sms-6 col-sm-6 col-md-3 tour" data-isAirTour="@item.IsAirTour" data-isForeignTour="@item.IsForeignTour" data-TourType="@item.TourType">
    </div>

如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:3)

tours[i]将返回DOM元素。要使jQuery对象使用.eq(index),要获取索引处的对象,则可以使用jQuery方法,如.attr()

tours.eq(i).attr('data-isAirTour')

答案 1 :(得分:2)

除了其他提议的解决方案之外,您还可以使用vanilla JS getAttribute()方法,如下所示:

&#13;
&#13;
var tours = $('#WrapTours').find('div.tour');
for (var i = 0; i < tours.length; i++) {
  var attr01 = tours[i].getAttribute("data-isAirTour");
  console.log(attr01);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="WrapTours">
  <div class="tour" data-isAirTour="yes"></div>
</div>
&#13;
&#13;
&#13;

或者,您可以使用dataset.isairtour(请记住将其全部保留为小写)以获得相同的结果:

&#13;
&#13;
var tours = $('#WrapTours').find('div.tour');
for (var i = 0; i < tours.length; i++) {
  var attr01 = tours[i].dataset.isairtour;
  console.log(attr01);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="WrapTours">
  <div class="tour" data-isAirTour="yes"></div>
</div>
&#13;
&#13;
&#13;