我正在尝试在单击时从 anchor 标记获取值/ID。代码对我来说似乎很好,但我不知道问题出在哪里;它每次都返回undefined 或nothing。
还尝试了 jQuery(this).attr("value");
、jQuery(this).val();
和 jQuery(this)。属性(“id”)
我试过的代码如下:
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<ul class="switch">
<li value="1"><a href="#" value="1" id="1">link 1</a></li>
<li value="2"><a href="#" value="2" id="2">link 2</a></li>
<li value="3"><a href="#" value="3" id="3">link 3</a></li>
<li value="4"><a href="#" value="4" id="4">link 4</a></li>
</ul>
<div class="clickedId"></div>
<script>
jQuery(document).ready(function() {
jQuery('ul.switch').click('a', function(evt) {
evt.preventDefault();
var id = jQuery(this).attr("value");
jQuery('.clickedId').append(id+'<br>');
});
});
</script>
</body>
</html>
最佳答案
你在 ul
上绑定(bind)事件,而不是在 anchor 上。因此,事件处理程序中的 $(this)
指的是 ul
,而 ul
没有 id
并且它将返回 undefined
。
jQuery('ul.switch a').click(function(evt) {
evt.preventDefault();
var id = jQuery(this).attr("value");
jQuery('.clickedId').append(id + '<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<ul class="switch">
<li value="1"><a href="#" value="1" id="1">link 1</a>
</li>
<li value="2"><a href="#" value="2" id="2">link 2</a>
</li>
<li value="3"><a href="#" value="3" id="3">link 3</a>
</li>
<li value="4"><a href="#" value="4" id="4">link 4</a>
</li>
</ul>
<div class="clickedId"></div>
你混淆了 click
和 on
,你可以使用 on
如下
jQuery('ul.switch').on('click', 'a', function(evt) {
关于javascript - jQuery(this).attr ('id' ) 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709408/