0

我有一个事件,它在页面上插入新的 DOM 元素。如何向这个新元素添加事件?我的目标是:当用户点击输入时,旧值应该被清除。我试过这个:

$('a').on('click', function() {
    var newel = '<input type="text" value="test" />';
    $(newel).insertAfter($('a'));

});
$('input').on('focus', function() {
    alert($(this).val());
    $(this).val('');
});​

http://jsfiddle.net/WpyUf/ 新事件没有添加到元素中,为什么?

4

4 回答 4

0

委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要。例如,该元素可以是模型-视图-控制器设计中视图的容器元素,或者如果事件处理程序想要监视文档中的所有冒泡事件,则可以是文档。在加载任何其他 HTML 之前,文档元素在文档的头部是可用的,因此在此处附加事件是安全的,而无需等待文档准备好。

$('a').on('click', function() {
    var newel = '<input type="text" value="test" />';
    $(newel).insertAfter($('a'));
});
$(document).on('focus', 'input', function() {
    $(this).val('');
});​

小提琴

于 2012-09-03T09:50:00.500 回答
0

您的代码通过将jQuery版本更改为1.7.2

这是更新的小提琴

于 2012-09-03T09:50:43.770 回答
0

你可以这样做。

$('a').on('click', function() {
    var newel = '<input type="text" />';
    $(newel).insertAfter($('a')).bind('click', function() {alert("me");});
;
});

http://jsfiddle.net/dadviegas/WpyUf/4/

于 2012-09-03T09:51:08.340 回答
0
$('a').on('click', function() {
    var newel = '<input type="text" />';
    $(newel).on("focus",function() { alert("hello")}).insertAfter($('a'));

});

演示

于 2012-09-03T09:52:18.473 回答