JQUERY中具有特定属性(id)的.next()元素

时间:2018-01-02 08:13:37

标签: javascript jquery



$(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;
&#13;
&#13;

我总是希望获得下一个元素ID。为什么不定义?水平是动态的。

var level //global
         $(".button").click(function () {
               level = $(this).attr("id");
                alert(level);//working
            });
   var ss= $(level).next().attr('id');
      alert(ss);//undefined

1 个答案:

答案 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中的实际代码缩小和代码自动完成,不再需要小变量名称。