当用户点击它时,我可以使用jquery轻松捕获选择选项的更改事件,但是如果javascript更改了选择值,则“更改”事件永远不会触发,需要手动触发。
是否可以在不需要trigger('change')
的情况下捕获值的变化?
示例小提琴:history API
答案 0 :(得分:3)
是否可以在不需要
trigger('change')
的情况下捕获值的变化?
没有。当JavaScript代码设置select的值时,不会触发任何事件。所以你的选择是:
您可以在响应change
事件时以及代码更改值时调用一个常用功能(可能会集中更改值,因此您不要忘记调用它)。
.trigger('change')
轮询该值以查看其是否发生变化(blech)。
Re#1和#2,你可以给自己一个valWithNotify
:
$.fn.valWithNotify = function(arg) {
if (arguments.length == 0) {
return this.val();
}
return this.each(function() {
$(this).val(arg).trigger("js-change"); // or just "change", but I'm not a
// fan of synthetic user events
});
};