Warning: Undefined array key 1 in /home/c1553354/public_html/knym.net/wp-content/themes/sango-theme-poripu/library/functions/prp_content.php on line 14
今は古いかもしれないjQuery。
クラス変化をしてるjavascriptがどれかわからないけどclassに追加・削除してる時に下記のコードでclassの変化のイベントを取得して、うまく実装できました。
(function( func ) {
$.fn.addClass = function() { // replace the existing function on $.fn
func.apply( this, arguments ); // invoke the original function
this.trigger('classChanged'); // trigger the custom event
return this; // retain jQuery chainability
}
})($.fn.addClass); // pass the original function as an argument
(function( func ) {
$.fn.removeClass = function() {
func.apply( this, arguments );
this.trigger('classChanged');
return this;
}
})($.fn.removeClass);
$(selector).on('classChanged', function(){ /*...*/ });
参照元:javascript – How to fire an event on class change using jQuery? – Stack Overflow
こんな感じでclass名の変化が起こったときに、処理をかける。
実際に書いたコードはこんな感じ
(function( func ) {
jQuery.fn.addClass = function() {
func.apply( this, arguments );
this.trigger('classChanged');
return this;
}
})(jQuery.fn.addClass);
jQuery(".search_btn_display").on('classChanged', function(){
f(jQuery(".search_btn_display").hasClass("current-lightbox-clicked")) {
jQuery(".search_btn_wrap").addClass("display_block_wrap");
}
});
wordpressで$を認識しなかったので、jQueryに置き換えてます。
ドロワーメニューのクラス変化をイベントとして取得して別のブロックの表示を処理してる。
ドロワーメニュー表示時にcurrent-lightbox-clickedがclass名に追加されるので、追加されてたら、別のウィンドウを表示する感じの使い方。
まぁ、これがいいかは、自信ないけど、とりあえずやりたい動きに対応できてよかった。