2012-02-14 4 views
1

私がしたいのは、クラス名の存在を監視する「ライブ」関数を持ち、のいずれかのイベントがそのクラス名をDOM内のどこにでも追加すると、別の関数が起動されます。jQuery Live "anything"機能?

これを行う関数を作成するにはどうすればよいですか?

+2

そのクラスを追加するときに余分な機能を実行しないのはなぜですか? – MetalFrog

+0

http://stackoverflow.com/a/1950052/768510では可能な解決策を提供していますが、これはあなたの問題に取り組んでいるとは思えません。 –

+0

クラスが広告をWordPressプラグインに入れていて、変更したくないという機能です。これを今後更新する必要があります。 –

答えて

1

この種の機能はjQueryには存在せず、実装するために必要なメソッドがブラウザによって犠牲にされているため、追加されません。出典:https://forum.jquery.com/topic/a-global-event-or-simple-callback-for-new-content-entering-the-page-specifically-for-applying-widgets-and-behaviour#14737000003041291

しかし、同じ投稿では、これを行うプラグインの言及があります。

https://github.com/snesin/jcade

+0

私は、OPが追加されたクラスを探していて、dom addedイベントではないと思います。 – Ktash

+0

クラスは常にaddClassメソッドで追加されない限り、DOM Mutationイベントと同じことです。新しい要素が追加されたときにクラスが表示されるとどうなりますか? –

+0

ああ、プラグインを見ていただけです。プラグインは 'DOMContentInserted'と' DOMContentRemoved'をサポートしているようです。それは突然変異のイベントでなければなりません(おそらく挿入時にもチェックする必要があります)。 – Ktash

1

にはクラス名のリスニングのための2つのオプションがあります。

  1. タイマーを実行し、そのクラスの新しい要素がその間隔であることを確認します。新しい要素が見つかった場合は、関数をトリガーします。
  2. リスニングしている同じイベントをリスンします。そこから、新しい要素をチェックすることができます。また、新しい要素が実行されたとみなして、それに関係なく関数を実行することもできます。

それ以外の場合、他の要素に非常に簡単にフックインする方法はありません。理論的には、彼らは閉鎖中で、コードをラッパーしていない場合、あなたは次のことを行うことができます:

var _theirfunction = theirfunction; 
function theirfunction() { 
    // You function to override theirs 
    _theirfunciton(); // Run their code. Make sure to pass along the arguments 
    yourFunction(); 
} 

彼らはそれを更新するとき、あなたはパラメータが一致することを確認する必要があるだろう、と関数名は同じですが。これは、彼らの機能をどのように扱い、それをどのように呼び出すかによっても問題になります。これが特定のコンテキスト内にある場合は、applyを実行する必要があります。