3

我可以设置这个监听器:

$('input[type="text"]').on('keyup paste input change', function() {
  console.log('Hello!');
});

如果我打开DevTools并执行以下操作:

$('input[type="text"]').val('a new value');

没有调用上述任何事件。对于这种情况,我应该听哪个事件?

4

2 回答 2

6

以编程方式更改元素值不会触发事件,您必须自己执行此操作。您可以使用 trigger 在 jQuery 中触发事件处理程序:

$('input[type="text"]').val('a new value').trigger('change');
于 2013-05-11T20:50:00.363 回答
-1

.val()函数被设计为在执行时不触发事件。我的意思是,即使由于 jQuery 的工作方式,它在技术上可能具有该功能。如果您使用该.val()功能,您可以手动执行您想要使用的事件$(element).val("something").click()/change()/input()/keyup()

于 2013-05-11T20:48:55.200 回答