有什么方法可以获取触发事件的元素的ID ?

我在想:

$(document).ready(function() { $(“a”).click(function() { VaR 测试 = caller.id; alert(test.val()); }); }); <script type=“text/javascript” src=“starterkit/jquery.js”></script> <表单类=“项目” id=“aaa”> <输入类=“标题”></input> </form> <表单类=“项目” id=“bb”> <输入类=“标题”></input> </form>

当然,除了var测试应该包含id“aaa”(如果事件是从第一个表单触发)和“bbb”(如果事件是从第二个表单触发)。


当前回答

在事件属性中触发事件的元素

event.currentTarget

我们得到DOM节点对象,在其上设置事件处理程序。


最嵌套的节点开始冒泡进程,我们有

event.target

事件对象总是事件处理程序的第一个属性,例如:

document.querySelector("someSelector").addEventListener(function(event){

 console.log(event.target);
 console.log(event.currentTarget);

});

更多关于事件委托的信息,请访问http://maciejsikora.com/standard-events-vs-event-delegation/

其他回答

您可以使用(this)引用触发该函数的对象。

'this'是一个DOM元素,当你在回调函数中(在jQuery上下文中),例如,被click, each, bind等方法调用。

你可以在这里了解更多:http://remysharp.com/2007/04/12/jquerys-this-demystified/

在jQuery事件中。Target总是指向触发事件的元素,其中event是传递给函数的参数。http://api.jquery.com/category/events/event-object/

$(document).ready(function() {
    $("a").click(function(event) {
        alert(event.target.id);
    });
});

还要注意的是,这也可以工作,但它不是一个jQuery对象,所以如果你想在它上使用jQuery函数,那么你必须引用它为$(this),例如:

$(document).ready(function() {
    $("a").click(function(event) {
        // this.append wouldn't work
        $(this).append(" Clicked");
    });
});
var buttons = document.getElementsByTagName('button');
var buttonsLength = buttons.length;
for (var i = 0; i < buttonsLength; i++){
    buttons[i].addEventListener('click', clickResponse, false);
};
function clickResponse(){
    // do something based on button selection here...
    alert(this.id);
}

在这里工作JSFiddle。

虽然在其他文章中提到过,但我还是想说清楚:

美元(event.target)。Id未定义

美元(event.target)[0]。Id给出Id属性。

id也给出了id属性。

这一点。Id给出Id属性。

and

(美元)。Id未定义。

当然,区别在于jQuery对象和DOM对象之间。“id”是一个DOM属性,所以你必须在DOM元素对象上才能使用它。

(它绊倒了我,所以它可能绊倒了其他人)

在事件属性中触发事件的元素

event.currentTarget

我们得到DOM节点对象,在其上设置事件处理程序。


最嵌套的节点开始冒泡进程,我们有

event.target

事件对象总是事件处理程序的第一个属性,例如:

document.querySelector("someSelector").addEventListener(function(event){

 console.log(event.target);
 console.log(event.currentTarget);

});

更多关于事件委托的信息,请访问http://maciejsikora.com/standard-events-vs-event-delegation/