为什么这个代码(jquery each。)在1st之后停止?

时间:2017-01-11 08:46:24

标签: jquery

我的网站顶部有一个名为“通知”的div。 我想循环遍历一个文本数组,并在每30秒内在该div内一个接一个地显示每个值。

我写的下面的代码不起作用,我已经多次尝试弄明白但没有任何效果。

var my_array = ["first text", "second text", "third text"];

jQuery.each(my_array, function(index, value) {
    jQuery('.notifications').replaceWith(value).delay(500);
});

1 个答案:

答案 0 :(得分:2)

delay()方法用于在动画队列中提供延迟,因此您无法使用replaceWith()方法。其次,replaceWith()将使用DOM树中的新元素替换整个元素,因此在第二次迭代中jQuery('.notifications')将不会选择任何内容,因为元素已被替换。

要使其工作,请使用setInterval方法,而不是替换整个元素,只需使用text()方法更新元素的内容。



var my_array = ["first text", "second text", "third text"];

// variable for counting
var i = 0;

// initialize interval and cache the return id
// to clear the interval later
var inter = setInterval(change, 500);
// call the function to execute initially
change();

function change() {
  // update the content
  jQuery('.notifications').text(my_array[i++]);
  // check count reache the length of array
  if (i == my_array.length)
  // if reached length of array then clear the interval
    clearInterval(inter);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="notifications"></span>
&#13;
&#13;
&#13;