jquery data-id未按预期工作

时间:2018-06-17 19:34:05

标签: javascript jquery

我只是试图通过在stackoverflow中引用先前解决的问题来获取html元素的data-id。我正在尝试相同但是未定义。为什么会这样?



<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<a data-id="123" class="a">link</a>
	<script type="text/javascript">
		$(document).ready(() => {
			$('.a').on('click',() => {
				console.log($(this).attr("data-id"));
			})
			
		})
	</script>
</body>
</html>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

您使用() => 箭头功能来使用ES6,这就是为什么不使用您的代码。它是您使用() => {}代替function () { }所要求的具体功能:

<script type="text/javascript">
  $(document).ready(() => {
    $('.a').on('click', function() {
      console.log($(this).data('id'));
    });

  })
</script>

解决此特定问题的方法不是使用它来获取对被点击元素的访问权限,而是使用event.currentTarget

<script type="text/javascript">
  $(document).ready(() => {
    $('.a').on('click', (e) => {
      console.log($(e.currentTarget).data('id'));
    });
  })
</script>

我建议你阅读documentation Arrow_functions

答案 1 :(得分:0)

试试这个 你创建的功能是错误的。

$('a').click(function(){
    console.log($(this).data('id'));
})

OR

$('a').on('click',function(){
    console.log($(this).attr('data-id'));
})

答案 2 :(得分:-2)

试试这个:

p