2012-03-02 66 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测试你的代码,它会提醒测试链接的链接。请换用更新版本的jquery – 2012-03-02 05:03:20

+0

什么星球是1.3新的? – charlietfl 2012-03-02 05:04:48

回答

1

我想这在回调背景下被包装成一个对象,所以我想这个问题(在Firefox和Chrome最新版本检查。) 更改回调:

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

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

一旦我找出包装为对象的原因,我将更新该帖子,并提供更详细的描述。

+0

谢谢,这是有效的,但是警报引出链接的名字,我如何改变这个以打印事件名称?我试过evt.toString(),但似乎并不正确..与此相同的结果.. evt.name也不起作用.. – Kiran 2012-03-02 05:06:49

+0

已更新帖子以提醒事件名称 – Chandu 2012-03-02 05:09:26

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

我已经复制粘贴从堆栈溢出帖子原来的代码,它适用于我完美。这里是jsfiddle

+0

刚刚意识到我正在使用此而不是evt.type ..谢谢 – Kiran 2012-03-02 05:15:06

-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>