我正在重写 jQuery 的.val()
函数,以便当我设置元素的值时select
我可以自动触发更改事件。
getter 和 setter 代码运行正常,但是当$('select').val()
控制台输出Getter
两次时。我认为这不应该发生,所以有人知道哪里出了问题吗?
这是一个 jsfiddle:https://jsfiddle.net/41hxsam9/1/
const originalVal = $.fn.val;
$.fn.extend( {
val: function() {
if ( arguments.length > 0 ) {
if ( this.hasClass( 'myselect' ) ) {
console.log( 'Setter' );
const result = originalVal.apply( this, arguments );
this.trigger( 'change' );
return result;
}
}
console.log( 'Getter' );
return originalVal.apply( this, arguments );
}
} );