$(document).ready(function(){
$(".btn").click(function(){
var level= $(this).attr('id');
alert(level);
var ss= $(level).next().attr('id');
alert(ss);
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="btn" id="1"src="img_pulpitrock.jpg" alt="Pulpit Rock" width="284" height="213"><br>
<img class="btn" id="2"src="img_pulpitrock.jpg" alt="Pulpit Rock" width="284" height="213"><br>
&#13;
我总是希望获得下一个元素ID。为什么不定义?水平是动态的。
var level //global
$(".button").click(function () {
level = $(this).attr("id");
alert(level);//working
});
var ss= $(level).next().attr('id');
alert(ss);//undefined
答案 0 :(得分:0)
您必须明白,只有当用户点击。按钮时才会定义您的关卡变量。
因此,当您定义ss时,尚未定义级别。请记住,JavaScript主要是异步的。
所以你必须这样做:
var level //global
$(".button").click(function () {
level = $(this).attr("id");
alert(level);//working
var ss= $('#' + level).next().attr('id');
alert(ss);//defined
});
通过添加HTML,您没有看到您的编辑。
修复了我的代码提案。但我真的建议你不要使用数字作为身份证。在这里,如果你点击第二个,最后一个,.btn,则没有下一个。所以它会崩溃。而不是使用&#34; ss&#34;作为变量的名称。因为它并不意味着什么。通过IDE中的实际代码缩小和代码自动完成,不再需要小变量名称。