我可以设置这个监听器:
$('input[type="text"]').on('keyup paste input change', function() {
console.log('Hello!');
});
如果我打开 DevTools 并执行:
$('input[type="text"]').val('a new value');
以上事件均未被调用。我应该听哪个事件发生这种情况?
答案 0 :(得分:6)
以编程方式更改元素值不会触发事件,您必须自己执行此操作。您可以使用触发器在jQuery中触发事件处理程序:
$('input[type="text"]').val('a new value').trigger('change');
答案 1 :(得分:-1)
.val()
函数的设计目的是在执行时不触发事件。我的意思是,即使它可以在技术上具有由于jQuery如何工作的功能。如果您使用.val()
功能,则可以使用$(element).val("something").click()/change()/input()/keyup()