私は次のようなリストを持っています:
<ul>
<li class="highlighted">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
N秒ごとに、「強調表示された」クラスを次の要素に移動したいと思います。兄弟がなくなったら、戻って最初から始めます。
誰かがこれを達成するためにjQueryを手伝ってもらえますか?
ありがとうございました!
私は次のようなリストを持っています:
<ul>
<li class="highlighted">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
N秒ごとに、「強調表示された」クラスを次の要素に移動したいと思います。兄弟がなくなったら、戻って最初から始めます。
誰かがこれを達成するためにjQueryを手伝ってもらえますか?
ありがとうございました!
このような何かがそれを行う必要があります:
HTML:
<ul id="myList">
<li class="highlighted">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
javascript:
$(function() {
var lis = $("#myList > li"),
currentHighlight = 0;
N = 5;//interval in seconds
setInterval(function() {
currentHighlight = (currentHighlight + 1) % lis.length;
lis.removeClass('highlighted').eq(currentHighlight).addClass('highlighted');
}, N * 1000);
});
さて、基本的にあなたはこのようなことをするでしょう
function highlight_next_li() {
var current = jQuery('.highlighted'); // get the current highlighted
var next = current.next();
// if no next then we're at the end
if( !next.length )
next = current.parent().find('li:first'); // get the first li element in the parent
next.addClass('highlighted');
current.removeClass('highlighted');
}
次に、setintervalを使用する必要があります。setintervalは、Xミリ秒ごとにset関数を繰り返します。
var myinterval = setInterval( highlight_next_li, 3000 ); // repeat that javascrispt every 3 seconds
その後、繰り返しを停止したいとき
clearInterval( myinterval );
これが実際の動作を確認するためのペンです:http://codepen.io/sagetarian/pen/dpKku
私はあなたが探しているものを実装しようとしました。http://jsfiddle.net/wudhd/
同じことを達成するためにsetTimeoutとjqueryのn番目の子
を
見ることができます。
var n = 1;
setInterval(function() {
var $li = $("li.highlighted"),
$siblings = $li.siblings().andSelf(),
next = ($li.index() + 1) % $siblings.length;
$li.removeClass("highlighted");
$siblings.eq(next).addClass("highlighted");
}, n * 1000); // Run every n seconds
フィドル。
ご覧のとおり、これを行うためのさまざまな方法があります...変数などで現在のアイテムを追跡できます
とにかく別のものを紹介します。この方法は適切であり、リストへの動的な変更を処理できると思います。
ulにIDまたはクラスを指定し、それを特定してターゲットにできるようにする方法に依存します。もちろん、リストを動的に変更する場合は、変更後も1つのハイライトがあることを確認する必要があります。
<!doctype html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
setInterval(nextSibling, 10000);
function nextSibling()
{
var family = $('#family').children();
var i = $(family).filter('.highlighted').index();
$(family[i]).removeClass('highlighted');
$(family[(i+1)%family.length]).addClass('highlighted');
}
</script>
<style>
.highlighted { background: #dddddd; }
</style>
</head>
<body>
<ul id="family">
<li class="highlighted">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</body>
</html>