javascript - 如何在 jQuery 中向 `change` 事件添加属性

标签 javascript jquery events jquery-events

我有一个<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);

JsFiddle

最佳答案

我不确定我是否明白,这是一个尝试:

(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/

相关文章:

javascript - 我应该根据行数分隔我的 javascript 代码文件吗?

jquery - DataTables自动设置导出标题

javascript - node.js 在一定时间后发出事件

javascript - TypeScript 中未定义的属性

javascript - 在 d3 Canvas map 上绘制圆弧时出现问题

javascript - 使用准备好的语句插入多行

javascript - 将js函数保留在jquery对象中

javascript - 创建一个书签,如果 div 包含特定文本,该书签将隐藏该 div

javascript - 缓慢的 jquery 性能

c++ - 如何将事件监听器/信号添加到简单的超人类?