如何获取 onClick() 的事件对象

beN*_*erd 4 jquery

我有一个循环,它使用 jquery 生成大量输入文本字段。现在,当有人单击这些输入标签时,我想触发 stopPropagation 方法。我认为这个方法的工作原理是这样的:

event.stopPropagation()
Run Code Online (Sandbox Code Playgroud)

但问题是我想在输入标签的 onClick 属性上触发此方法。像这样:

$(handler).html('<input type="text" value="'+text+'" style="width:280px;" onClick=stopPropagation(); />');
Run Code Online (Sandbox Code Playgroud)

由于显而易见的原因,这不会起作用。我需要获取这次点击的事件对象。什么是更聪明的方法?

SpY*_*3HH 7

这很简单,只需将“event”关键字添加到 onClick 调用中,如下所示:

$(handler).html('<input type="text" value="'+text+'" style="width:280px;" 
    onClick=stopPropagation(event); />');
Run Code Online (Sandbox Code Playgroud)

然后在你的函数中:

function stopPropagation(event) { /* do work */ }
Run Code Online (Sandbox Code Playgroud)

或者你可以用 jQuery 的方式来做:

$('input').on("click", function(event) { /* do work */ });
Run Code Online (Sandbox Code Playgroud)

请记住,在内联函数上,就像单词 一样thisevent是一个关键字,告诉 js 您的函数应该获取事件参数

最后你可以改变所有的加在一起:

var newInp = $("<input />").width(280).text(text);
$(handler).append(newInp);
newInp.on("click", function(e) { /* e is your event */ });
Run Code Online (Sandbox Code Playgroud)