我有一个循环,用jquery生成很多输入文本字段。现在我想在有人点击这些输入标签时触发stopPropagation方法。我认为这种方法的工作原理如下:
event.stopPropagation()
但问题是我想在输入标记的onClick属性上触发此方法。像这样:
$(handler).html('<input type="text" value="'+text+'" style="width:280px;" onClick=stopPropagation(); />');
由于显而易见的原因,这不起作用。我需要获取此次单击的事件对象。什么是更聪明的方式?
答案 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();
});