使用jQuery获取有关事件源的信息

函数绑定到许多对象的事件。 其中一个对象触发事件,jQuery启动。如何找出谁在JavaScript函数中解雇了事件?

我已经尝试过使用function [name](event){}并在事件中进行戳,但我得到“’data’为null或者不是对象”。

这是我现在的代码:

  $(document).ready(function() { $('.opening').bind("click", function(event) { //code to populate event.data since right now, the tags don't hold the info...they will eventually with an XHTML custom namespace event.data.building = "Student Center"; event.data.room = "Pacific Ballroom A"; event.data.s_time = "9/15/2009 8:00"; event.data.e_time = "9/15/2009 10:00"; indicatePreferenceByClick(event); }); function indicatePreferenceByClick(event) { alert("I got clicked and all I got was this alert box."); $("#left").load("../ReserveSpace/PreferenceByClick", { building: event.data.building, room: event.data.room, s_time: event.data.s_time, e_time: event.data.e_time}); };  

你可以在Jquery函数中使用它,它会给你注入事件的项目。

  

这是一个完整页面的工作示例。 调用者在line console.log($caller.prop("id"));记录到控制台console.log($caller.prop("id"));

     Untitled 1     

您根本不需要jQuery来获取事件的目标。 它始终可用作事件的currentTarget属性。 当然,您可以使用jQuery来设置事件处理程序,但是在不使用该库的情况下轻松完成目标。 例如:

             

至于在尝试访问event.data时处理’null’,这非常有意义,因为’data’不是click事件的属性。

  $(document).ready(function() { $('.opening').bind("click", function(event) { // event.data is null so you can't add properties to it event.data.building = "Student Center"; // <- this will fail indicatePreferenceByClick(event); }); }); 

您可以向数据对象添加另一个属性,如下所示:

 $(document).ready(function() { $('.opening').bind("click", function(event) { event.data = {}; event.data.building = "Student Center"; indicatePreferenceByClick(event); }); }); 

或者,您可以将另一个变量传递给您的函数:

 $(document).ready(function() { $('.opening').bind("click", function(event) { var data = {}; data.building = "Student Center"; indicatePreferenceByClick(event, data); }); }); 

使用target您可以访问导致当前执行/事件的控件。 像这样:

 $(event.target) 

当您将事件附加到多个对象时,识别触发事件的哪个元素的最佳方法是使用this关键字。 示例 –

 $('.opening').bind("click", function(event) { var current = $(this); // will give you who fired the event. //code to populate event.data since right now, the tags don't hold the info...they will eventually with an XHTML custom namespace event.data.building = "Student Center"; event.data.room = "Pacific Ballroom A"; event.data.s_time = "9/15/2009 8:00"; event.data.e_time = "9/15/2009 10:00"; indicatePreferenceByClick(event); }); 

如果这有帮助,请告诉我。