循环遍历子元素和编号类到每个li

时间:2017-06-30 10:14:04

标签: jquery

我正在尝试循环遍历ul的子元素,并为每个元素添加一个编号的类。大多数代码都有效,但我得到.offset()的未定义错误。有人可以帮我解决原因吗?

这是一个基于PHP的网站,代码生成类.services和一个与ID相同的类的面板

var countServices = $("#services-menu ul li");
// console.log(countServices.length);

var i;
for (i = 0; i < countServices.length; i++) {
  // console.log("services" + i)

  $(".services" + i).click(function() {
    console.log("Clicked on .services" + i)
    $('html, body').animate({
      scrollTop: $("#services" + i).offset().top
    }, 2000);
  });
};

1 个答案:

答案 0 :(得分:0)

我认为你的事情过于复杂,而且我在错误的地方。这将永远是1。

以下是演示:https://jsfiddle.net/vcjdx42x/2/

试试这个:

<div id="services0">lorem ipsum</div>
<div id="services1">lorem ipsum</div>
<div id="services2">lorem ipsum</div>
<div id="services3">lorem ipsum</div>

<div id="services-menu">
    <ul >
        <li class="services0">0</li>
        <li class="services1">1</li>
        <li class="services2">2</li>
        <li class="services3">3</li>
    </ul>
</div>

<script>
    i = 0;
    $("#services-menu ul li").each(function (idx, obj) {
        var name = "#services" + i;
        console.log(name);
        $(this).click(function() {
            console.log($(this));
            $('html, body').animate({
                scrollTop: $(name).offset().top
            }, 2000);
        });
        i++;
    });


</script>