2

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

event.stopPropagation()

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

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

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

4

4 回答 4

5

很简单,只需在 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 */ });

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

最后你可以一起改变加法:

var newInp = $("<input />").width(280).text(text);
$(handler).append(newInp);
newInp.on("click", function(e) { /* e is your event */ });
于 2012-11-19T06:18:39.027 回答
2

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

var el = $('<input type="text" value="'+text+'" style="width:280px;" />');
$(handler).append(el);
el.click(function(e){
    e.stopPropagation();
});
于 2012-11-19T06:13:25.187 回答
1

你可以通过这种方式。

$('#id').click(function(event){
     event.stopPropagation();
});
于 2012-11-19T06:12:05.663 回答
0

代替onClick=stopPropagation()

您可以使用

$('#your_input_id').click(function(event){
     event.stopPropagation();
});
于 2012-11-19T06:14:04.877 回答