jQuery是否在不设置普通事件处理程序的情况下处理事件?

时间:2009-12-18 23:03:47

标签: javascript jquery

在HTML页面上使用div,我使用jQuery添加了一个click事件处理程序:

  $(document).ready(function(){    

      $("div").click(function() { alert("clicked!"); });

  });

然后我使用Visual Studio 2008(或IE8)调试器逐步执行javascript / jquery。我希望在调试器中看到一个值:

$(“div”)[0].onclick

$(“div”)[0]是选择器$(“div”))结果集合中的第一个div。

但我没有。我认为jQuery的事件分配方法(例如,.click(function))实际上是为元素的底层事件赋值。他们不是?

换句话说,这两行代码没有相同的影响,但我认为它们会:

$("div").click(function() { alert("clicked!"); }); // (Line 1)
$("div")[0].onclick = function() { alert("clicked!"); }; // (Line 2)

任何人都可以解释这一点,或者指出我做错了什么吗?我想在我的代码中使用第1行,但是根据我的需要,似乎我必须使用第2行(仅供参考,我计划使用实际功能,而不只是显示警报:-))。

谢谢

1 个答案:

答案 0 :(得分:2)

jQuery不使用onclick属性将事件附加到元素。它使用attachEvent(IE)或addEventListener(所有其他)。您可以在未压缩jquery-1.3.2.js的2500-2502行找到吸烟枪。

但是,您应该能够在jQuery事件处理程序中放置一个断点,并让Visual Studio停在那里。在点击F9之前点击事件处理程序的主体内部(例如在“alert”上),或者将事件处理程序主体分解为它自己的行,例如。

$(document).ready(function(){    
    $("div").click(function() {
        alert("clicked!"); // place a breakpoint on this line
    });
});