我正在编写一个 jQuery 事件插件,我需要将一些数据传递给一个参数。所以如果我这样使用它:
$(element).on('myevent', function(event, myargument) { console.log(myargument); });
我不想获取 myargument
对象及其在处理程序中设置的属性(例如 name
)。
那么这将如何与下面的代码一起工作?
SmartScroll.myevent = {
setup: function() {
var myargumentData,
handler = function(evt) {
var _self = this,
_args = arguments;
// The data I wan't to get
myargumentData = {
name: "Hello"
};
evt.type = 'myevent';
jQuery.event.handle.apply(_self, _args);
};
jQuery(this).bind('scroll', handler).data(myargumentData, handler);
},
teardown: function() {
jQuery(this).unbind('scroll', jQuery(this).data(myargumentData));
}
};
最佳答案
您可以修改传递给 add
的对象。
$.event.special.foo = { add: function(h) {
var hh = h.handler;
h.handler = function(e, a) {
hh.call(this, e, a * 2);
};
} };
现在,让我们绑定(bind)事件:
$("body").on("foo", function(e, a) {
console.log(a);
});
触发事件,看看会发生什么:
$("body").trigger("foo", [ 10 ]); // 20
关于javascript - 为 jQuery 特殊事件添加自定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13385254/