2016-11-30 8 views
0

スライダを設定し、特定のスライドに移動したときに関数をオフにしたいと考えています。jQueryは要素クラスが変更されたときに関数を実行します

// event listener 
function addClassNameListener(elemId, callback) { 
    var elem = $(".swiper-home .swiper-slide:nth-child(2)"); 
    var activeClassName = 'swiper-slide-active'; 
    window.setInterval(function() { 
    var className = elem.className; 
     if (className == activeClassName) { 
     callback(); 
     } 
    },10); 
    } 

addClassNameListener("foo", function(){ 
    $('.swiper-slide-active .count').each(function() { 
    //$('body').scrollTop($(this).parent.offset().top); 
    $(this).prop('Counter', 0).animate({ 
     Counter: $(this).data().total 
    }, { 
     duration: $(this).data().seconds * 1000, 
     easing: 'swing', 
     step: function (now) { 
     $(this).text(Math.ceil(now)); 
     } 
    }); 
    }); 
    alert("changed"); 

}); 

私はjsFiddle

+0

:スライド変更イベントのアクティブなスライドを取ります複数のクラスを持つ要素を許可する*と*の問題を修正しました。また、 'addClassNameListener()'関数は 'elemId'パラメータを使用しません。 – nnnnnn

+0

こんにちは@nnnnnn、ありがとう、私はちょうどそれを試したし、まだ動作しません。 – babusi

答えて

0

を設定しているあなたは間違っている、実際にいくつかのものがあります。これは私がこれまで行ってきたが、それは動作していないものです。

elem上のclassNameにアクセスしていますが、dom要素ではなくjqueryオブジェクトであるため、このプロパティはありません。それは、それはあなたがより良い elem.hasClass(activeClassName)

をチェックしてもそれに、あなたのコールバック関数は、10ミリ秒ごとに実行される必要がありますので、関係なくスライドを変更していないかどうか

もしれた、スペースで区切られたすべてのクラスを与えるだろうとしても使用しているswiperライブラリのapiを見ると、あなたが提供しているものを使うことができます。

など。あなたは(elem.hasClass(もし `にテストを変更することができます - あなたの` elem`変数はjQueryオブジェクトであるので、それは `.className`プロパティを持っていない

var swiper = new Swiper('.swiper-container', { 
    onSlideChangeEnd: function(swiper) { 
     var $activeSlide = $(swiper.slides[swiper.activeIndex]); 
     //check if this slide is the one you are looking for 
     if ($activeSlide.attr('id') == elemId) 
     { 
      //do your stuff with the active slide 
     } 
    } 
}); 
+0

ありがとうございます。エラーを見つけて申し訳ありません。 – babusi

関連する問題