我有一个<select>
框:
<select id="myselect">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
我需要修改它的change
事件,所以它会有 val_after_change
属性,无论事件如何触发。
// THIS FUNCTION CANNOT BE MODIFIED
$('#myselect').change(function(e){
// this should alert select value after change
alert(e.val);
});
我知道,在这里我可以 alert $(this).val()
,但我的真实示例更复杂,需要 e.val
。我知道这适用于 select2 ,但我无法理解他们的源代码。
如何修改事件?我需要做 wrapper 什么的吗?任何帮助将不胜感激。
编辑:
我正在一个库上制作一个包装器,这使得 selects
使用e.val
属性,所以我无法修改 change
事件本身。当事件触发时,我需要该属性已经存在。像这样的东西,但将其设为默认行为:
e = jQuery.Event('change', {val: 2});
$('#myselect').trigger(e);
最佳答案
我不确定我是否明白,这是一个尝试:
(function ($){
// keep a copy of the original "select2" function
var lib_select2 = $.fn.select2;
// wrap it into a call which
// first adds a listener to add the value as a property of the event,
// then adds whatever extra stuff the library adds
$.fn.select2 = function(){
this.change(function(e){
e.val = this.value;
});
lib_select2.apply(this, arguments);
}
})(jQuery)
关于javascript - 如何在 jQuery 中向 `change` 事件添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477834/