2

カルーセルがスライドしたら、 ID の外側の入力に値を追加したいと思いますmyCarousel

カルーセルがスライドした後にイベントを実装する関数は次のとおりです。

$('#myCarousel').bind('slid', function() {
  $('input[name=linkOnly]').val('Test')
}

特定のスライドがスライドしたら、イベントを発生させたいです。のようなものを試しまし$('#myCarousel li[data-slide-to=1]').bind('slid', function() ...たが、登録されません。

助けていただければ幸いです。

4

1 に答える 1

4

適切なイベントでイベント ハンドラーをセットアップし、どのスライドが.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物事が期待どおりに機能することを確認するためだけに、(の代わりに)小さな遅延を入れる価値さえあるかもしれません.

于 2013-04-15T02:04:20.653 に答える