9

jQuery UIの日付ピッカーがあります。日付をクリックすると、URLハッシュがにクリア#され、テキストボックスの日付は変更されません。

どこかに他のJavaScriptユーティリティがあり、それも呼び出され、エラーをスローし、jqueryハンドラーを強制終了するある種の委任されたイベントがあると思います。

どうすればステップスルーできますか、またはすべての委任されたイベントがこのdom要素に一致することを確認できます。

4

2 に答える 2

11

Chromeの開発ツールはこれに役立ちます:

  1. Chromeをページに向けます
  2. jQuery UI datepickerで日付を右クリックし、「要素の検査」を選択します。
  3. 右端には色んなものを持ったアコーディオンがいます。下部には「イベントリスナー」があります。(Chromeの開発ツールの現在のバージョンは、jQueryのハンドラーチェーンのクエリを含め、これに関して非常に賢いです。)
  4. [イベントリスナー]ツリーアイテムを展開すると、ハンドラーがその要素に特に設定されていない場合でも、その要素に関連するフックされたイベントのリストが表示されます。(たとえば、質問の賛成ボタンを使用してこれを行った場合、との両方clickにフックされていることがわかります。)したがって、それらをキックして、その要素のそのイベントにどの直接ハンドラーと委任ハンドラーが関連しているかを確認できます。a.vote-up-offdocument

それ以外の場合は、縮小されていないバージョンのjQueryを使用して、日付ピッカーで日付をクリックしたときにイベントディスパッチをウォークスルーできます。

そしてもちろん、Gabeeventsは、文書化されていないjQueryデータを介してjQuery固有のハンドラーを取得する方法を示しました。(これでは、委任されたハンドラーは表示されません(祖先ツリーを歩いていない限り)。また、アタッチされている可能性のあるjQuery以外のハンドラーは表示されませんが、それでもかなり便利です。)

于 2012-06-18T16:36:40.793 に答える
4

eventsjQueryを使用すると、データのキーにアクセスすることで、すべての要素のイベントを確認できます。

jsFiddle

例:

HTML

<input type="text" id="myelement" />​

JS

$(function() {


    var myelement = $('#myelement');
    myelement.click(function() {

        console.log('anonymous event');

    });

    myelement.click(anotherEvent);
    myelement.change(anotherEvent);

    var events = myelement.data('events');

    console.log('Number of click events:' + events.click.length);
    console.log('Number of change events:' + events.change.length);

});

function anotherEvent(){
    console.log('another event');   
}
于 2012-06-18T16:32:32.807 に答える