2012-03-02 3 views
0

こんにちは、the following linkで提案されているようにどのようなイベントがトリガされるのかを確認しようとしています。しかし、私は警告が表示されません..ここで何が間違っていますか?jqueryを使用してイベントシーケンスをテストする

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title> test ground</title> 

    <!-- JQuery specific --> 
    <script type="text/javascript" src="libs/jQuery/jQuery.min.js" ></script> 

    <script> 
    $(document).ready(function() { 
     $.each([ 
      'blur', 'change', 'click', 'contextmenu', 'copy', 
      'cut', 'dblclick', 'error', 'focus', 
      'keydown',   'keypress',   'keyup', 
      'mousedown',   'mousemove',   'mouseout', 
      'mouseover',   'mouseup', 
      'mousewheel',   'paste', 
      'reset',   'resize', 
      'scroll',   'select', 
      'submit', 
      // W3C events 
      'DOMActivate',   'DOMAttrModified',   'DOMCharacterDataModified', 
      'DOMFocusIn',   'DOMFocusOut',   'DOMMouseScroll', 
      'DOMNodeInserted',   'DOMNodeRemoved',   'DOMSubtreeModified', 
      'textInput', 

      // Microsoft events 
      'activate', 
      'beforecopy', 
      'beforecut', 
      'beforepaste', 
      'deactivate', 
      'focusin', 
      'focusout', 
      'hashchange', 
      'mouseenter', 
      'mouseleave' 
     ], function() { 
      $('a').live(this, function (evt) { 
       alert(this); 
      }); 
     }); 
    }); 
    </script> 
</head> 
<body> 
<a href="http://www.google.com"> test </a> 
</body> 
</html> 
+0

私はjquery.1.3.1であなたのコードをテストしており、テストリンクのリンクを警告します。新しいバージョン –

+0

でjqueryを変更してください。どのような惑星が1.3で新しくなったのですか? – charlietfl

答えて

1

私は、コールバックを変更 オブジェクトとしてラップので、私は推測する問題は(FirefoxとChromeの最新バージョンで確認。)されているコールバックのコンテキストでこれを推測:

function (a, b) { 
     $('a').live(b, function (evt) { 
       alert(evt.type); 
     }); 
} 

これがオブジェクトとしてラップされた理由を理解したら、投稿をより詳細な説明で更新します。

+0

ありがとう、これは動作しますが、アラートはリンクの名前をpritingしていますが、これを変更してイベント名を出力するにはどうすればよいですか?私はevt.toString()を試しましたが、これは正しいとは思われません..このevt.nameと同じ結果は動作しません.. – Kiran

+0

イベントを警告するように投稿を更新しました – Chandu

0

あなたはそれがオブジェクトのthis呼んで初めて - それは文字列

$('a').live(this.toString(), function (evt) {     
0

はこれを試してみてくださいます

<script> 
$(document).ready(function() { 
    var el = $("#doIt"); 

    $.each([ 
     'blur', 'change', 'click', 'contextmenu', 'copy', 
     'cut', 'dblclick', 'error', 'focus', 
     'keydown',   'keypress',   'keyup', 
     'mousedown',   'mousemove',   'mouseout', 
     'mouseover',   'mouseup', 
     'mousewheel',   'paste', 
     'reset',   'resize', 
     'scroll',   'select', 
     'submit', 
     // W3C events 
     'DOMActivate',   'DOMAttrModified',   'DOMCharacterDataModified', 
     'DOMFocusIn',   'DOMFocusOut',   'DOMMouseScroll', 
     'DOMNodeInserted',   'DOMNodeRemoved',   'DOMSubtreeModified', 
     'textInput', 

     // Microsoft events 
     'activate', 
     'beforecopy', 
     'beforecut', 
     'beforepaste', 
     'deactivate', 
     'focusin', 
     'focusout', 
     'hashchange', 
     'mouseenter', 
     'mouseleave' 
    ], function (index, value) { 
     el.on(value, function (evt) { 
      console.log("Whatever %o", this); 
     }); 
    }); 
}); 
</script> 

は基本的に一度だけのjQueryを呼び出す(不要要素をつかむことを確認しましたボートロード)を呼び出し、.each()によって呼び出された関数からイベント名を取得しました。

1

スタックオーバーフローポストの元のコードを貼り付けてコピーしましたが、完璧に機能しました。ここでは、あなたの2番目のスクリプトタグでスクリプトのタイプを指定する必要がまずjsfiddle

+0

これを使用していることがわかりましたevt.typeの代わりに..ありがとう – Kiran

-2

へのリンクです。 $ .live( "click"、function(){})にイベントの種類を指定します。

<script type="text/javascript"> 
$(document).ready(function() { 
    $.each([ 
     'blur', 'change', 'click', 'contextmenu', 'copy', 
     'cut', 'dblclick', 'error', 'focus', 
     'keydown',   'keypress',   'keyup', 
     'mousedown',   'mousemove',   'mouseout', 
     'mouseover',   'mouseup', 
     'mousewheel',   'paste', 
     'reset',   'resize', 
     'scroll',   'select', 
     'submit', 
     // W3C events 
     'DOMActivate',   'DOMAttrModified',   'DOMCharacterDataModified', 
     'DOMFocusIn',   'DOMFocusOut',   'DOMMouseScroll', 
     'DOMNodeInserted',   'DOMNodeRemoved',   'DOMSubtreeModified', 
     'textInput', 

     // Microsoft events 
     'activate', 
     'beforecopy', 
     'beforecut', 
     'beforepaste', 
     'deactivate', 
     'focusin', 
     'focusout', 
     'hashchange', 
     'mouseenter', 
     'mouseleave' 
    ], function (en, ev) { 
     $('a').live('click', function (evt) { 
      alert(ev); 
     }); 
    }); 
}); 
</script> 
関連する問題