21

对于以下代码:

  <span class="map-marker" data-lng="101.7113506794"></span>
  <span class="map-marker" data-lng="101.6311097146"></span>

  var abc = $('.map-marker:first');
  var xyz = abc.getAttribute("data-lat");
  console.log(xyz);

我收到错误消息:TypeError: abc.getAttribute is not a function。我做错了什么?

4

7 回答 7

44

试试这个可能是:

var abc = $(".map-marker:first")[0];
var xyz = abc.getAttribute("data-lat");
console.log(xyz);

或这个:

var abc = $(".map-marker:first");
var xyz = abc.data("lat");
console.log(xyz);
于 2013-08-10T15:12:07.300 回答
24

abc是一个 jQuery 对象,所以它没有getAttribute()函数。它有一个attr()功能。

于 2013-08-10T15:13:33.583 回答
10

我做错了什么?

您将jQuery 对象视为DOM 元素。jQuery 对象没有getAttribute方法。您可以使用.attr.data代替。

于 2013-08-10T15:13:41.730 回答
4

您正在选择多个元素。select函数返回一个数组,该数组没有getAttribute函数。您可以使用 for 循环遍历选择并获取属性值,或者您可以使用索引器(例如 [0])来获取特定的属性。

于 2013-08-10T15:12:00.880 回答
3

您试图获得“data-lat”,但您只定义了“data-lng”。

于 2015-09-18T08:28:10.363 回答
2

注意在具有动态范围的事件处理程序中进行访问this

调用this不存在的函数可能会导致node.getAttribute is not a function.

于 2019-06-26T23:11:57.463 回答
2

刚刚陷入这个问题。同意@Felix Kling 试试下面:

<span class="map-marker" data-lng="101.7113506794"></span>
<span class="map-marker" data-lng="101.6311097146"></span> 

<script>
var abc = $('.map-marker:first');
var xyz = $(abc).attr("data-lng");
console.log(xyz);
</script>
于 2018-07-23T15:21:25.673 回答