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

时间:2012-11-19 06:08:56

标签: jquery

我有一个循环,用jquery生成很多输入文本字段。现在我想在有人点击这些输入标签时触发stopPropagation方法。我认为这种方法的工作原理如下:

event.stopPropagation()

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

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

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

4 个答案:

答案 0 :(得分:2)

更聪明的方法是根本不使用内联事件处理程序:

var el = $('<input type="text" value="'+text+'" style="width:280px;" />');
$(handler).append(el);
el.click(function(e){
    e.stopPropagation();
});

答案 1 :(得分:2)

很简单,只需在onClick调用中添加“事件”关键字,如下所示:

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

然后在你的函数中:

function stopPropagation(event) { /* do work */ }

或者你可以用jQuery方式做到:

$('input').on("click", function(event) { /* do work */ });

请记住,在内联函数中,就像单词this一样,event是一个关键词,告诉js你的函数应该得到一个事件参数

最后,您可以一起更改添加:

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

答案 2 :(得分:1)

你可以通过这种方式传递它。

$('#id').click(function(event){
     event.stopPropagation();
});

答案 3 :(得分:0)

而不是onClick=stopPropagation()

你可以使用

$('#your_input_id').click(function(event){
     event.stopPropagation();
});