这是一个简单的测试页面。问题是,对于第一次点击锚标记,我得到了值,但是当我第二次点击它时,似乎ajax停止工作。请告诉我如何解决它。谢谢!
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<style>
</style>
</head>
<body>
<script>
$(document).ready(function() {
$("a").one('click', function(e) {
$.ajax({
type: 'GET',
data: {
play: $(this).attr("href") },
success: function(msg) {
//alert(msg);
$("#playarea").append(msg);
}
});
e.preventDefault();
});
});
</script>
<div><a id="run1" href="link1">Test1...</a></div>
<div><a id="run1" href="link2">Test2...</a></div>
<div><a id="run1" href="link3">Test3...</a></div>
<div><a id="run1" href="link4">Test4...</a></div>
<div><a id="run1" href="link5">Test5...</a></div>
<div id="playarea"></div>
</body>
</html>
答案 0 :(得分:1)
您应该使用 on()
而不是 .one()
,因为one()
只会点击一次点击事件然后分离它
.one()
说明:将处理程序附加到元素的事件。每个事件类型的每个元素最多执行一次处理程序。
$("a").on('click', function(e) {
$.ajax({
type: 'GET',
data: {
play: $(this).attr("href") },
success: function(msg) {
//alert(msg);
$("#playarea").html(msg);
}
});
e.preventDefault();
});
注意:如果您要覆盖旧结果,请使用html()
代替append()
。
希望这会有所帮助。