適切なイベントでイベント ハンドラーをセットアップし、どのスライドが.current
. たとえば、スライド 1 が循環するときに JavaScript をトリガーするには、次のようにします。
$(document).on("slid", function(event) {
if ($(event.target).find(".active").data("slide-to") == 1) {
// do stuff
}
});
簡単なテストから、これはカルーセルの上の要素にアタッチされていない限り機能しないようです (カルーセルが複数ある場合は、少し変更する必要もあります)。
編集:簡単に見てみると、カルーセル自体にバインドされている場合に上記が機能しない理由はactive
、イベントがトリガーされた直後までクラスが追加されないslid
ためです(ハンドラーが親要素に追加された場合、イベントがバブルアップしている間にactive
クラスが追加されます)。slid
を使用してトリガーされた動作を遅らせることで、これを回避できますsetTimeout
(タイムアウトが の場合でも機能します0
)。
$("#myCarousel").on("slid", function(event) {
var carousel = $(event.target);
setTimeout(function() {
if (carousel.find(".carousel-indicators .active").data("slide-to") === 1) {
// do stuff
}
}, 0);
});
余分なコードが価値があるかどうかはあなた次第ですが、もう少し安定しているかもしれません. 0
物事が期待どおりに機能することを確認するためだけに、(の代わりに)小さな遅延を入れる価値さえあるかもしれません.