2016-07-18 4 views
0

jqueryを使用して、ユーザーがクリックしたときにselectオプションのchangeイベントを簡単にキャッチできます。ただし、javascriptがselect値を変更すると、 'change'イベントはトリガーされず、手動でトリガーする必要があります。jsトリガ変更イベントをキャッチできますか?

手動でtrigger('change')にすることなく値の変更をキャッチすることはできますか?ここ

例フィドル:https://jsfiddle.net/1fhbha4o/1/

+0

あなたの質問の完全な内容は、** **あなたの質問には、だけではないとしてもに、リンクされていないする必要がありますjsFiddle(したがって、コードとしてマークされていない場合、jsFiddleへのリンクを妨げる警告)。リンクが腐って、将来の質問やその回答が役に立たなくなり、人々はあなたを助けるためにオフサイトに行く必要はありません。例が重要な場合は、Stack Snippets( '<>'ツールバーボタン)を使用して理想的には実行可能にすることが理想的です。 [*](/ help/how-to-ask) –

+1

あなたは 'trigger( 'change')'または 'change()'を使って自分でイベントをトリガする必要があります。どちらも、この問題に対する非常に一般的なアプローチです。あなたは 'MutationObserver'を使うことができますが、まだ十分にサポートされていません。おそらくこれは残念です。 –

+0

あなたの質問は明確ではありませんか?達成しようとしていることを詳しく教えてもらえますか? – brk

答えて

3

は、それが手動でtrigger('change')することなく、変化する値をキャッチすることは可能ですか?

いいえJavaScriptコードによってselectの値が設定されても、イベントは発生しません。だからあなたのオプションは次のとおりです。

  1. は、あなたのコードは、(あなたがそれを呼び出すことを忘れないように、おそらく値を変更一元化)の値を変更するたびに、あなたがchangeイベントに応答しても、両方の呼び出しの一般的な機能を持っています。

  2. .trigger('change')

  3. ポーリング値を、それが(BLECH)を変更するかどうかを確認します。 #1、#2の再

、あなた自身valWithNotifyを与えることができる:

$.fn.valWithNotify = function(arg) { 
    if (arguments.length == 0) { 
     return this.val(); 
    } 
    return this.each(function() { 
     $(this).val(arg).trigger("js-change"); // or just "change", but I'm not a 
               // fan of synthetic user events 
    }); 
}; 
+1

* sigh。ありがとう、私はそれが事実だと思った。 – lonewarrior556

関連する問題