我正在编写一个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));
}
};
答案 0 :(得分:1)
您可以修改传递给add
的对象。
$.event.special.foo = { add: function(h) {
var hh = h.handler;
h.handler = function(e, a) {
hh.call(this, e, a * 2);
};
} };
现在,让我们绑定事件:
$("body").on("foo", function(e, a) {
console.log(a);
});
点燃事件,看看会发生什么:
$("body").trigger("foo", [ 10 ]); // 20
答案 1 :(得分:0)
on: function( types, selector, data, fn, /*INTERNAL*/ one )
据消息来源。 所以,如果我理解你的问题,那就做:
$(element).on('myevent',{my_data:"foo"},function(event) {
console.log(event.data.my_data);
});
打印“foo”