![](/img/trans.png)
[英]How to pass additional arguments to callback functions in javascript when using .execute()?
[英]Pass additional arguments into javascript event
我正在尝试使用JavaScript函数作为jQuery的事件处理程序,但它需要一个额外的信息。 我试图与数据上增加它的对象,并使用this
,但是this
时候被执行为空。 我相信这与JavaScript中的函数复制有关。 我怎样才能传递我的额外信息。
<script type="text/javascript">
var WIDTH_ATTR = 'initWidth';
function resizeHandler(event, ui){
var change = ui.size.width - this.master.attr(WIDTH_ATTR);
this.slave.width(slave.attr(WIDTH_ATTR) - change);
};
function splitResize(master, slave, masterHandles){
var s = new SharedResize(master, slave);
master.resizable({ handles: masterHandles, resize: s.resizeHandler });
}
function SharedResize(master, slave){
this.master = master;
this.slave = slave;
this.resizeHandler = resizeHandler;
master.attr(WIDTH_ATTR, master.width());
slave.attr(WIDTH_ATTR, slave.width());
}
// initialise plugins
$(function(){
try {
$('ul.sf-menu').superfish();
splitResize($('#Content'), $('#InfoPanel'));
}catch(ex){
alert(ex.message);
}
});
</script>
此代码给出了错误
Line:13 'this.master' is null or not an object.
尝试调整大小时。
我可以使此方案有效,还是有另一种方法将事件处理程序与我的数据相关联。
试试这个改变:
function splitResize(master, slave, masterHandles){
var s = new SharedResize(master, slave);
master.resizable({ handles: masterHandles,
resize: function(event, ui) { s.resizeHandler(event, ui); } });
}
有了它,“resize”处理程序将是一个匿名函数,反过来,它使用适当的上下文(“SharedResize”实例)调用您的处理程序。
你可以做Pointy的建议,也可以这样做:
function SharedResize(master, slave){
this.master = master;
this.slave = slave;
this.resizeHandler = function(event, ui){
var change = ui.size.width - this.master.attr(WIDTH_ATTR);
this.slave.width(slave.attr(WIDTH_ATTR) - change);
};
master.attr(WIDTH_ATTR, master.width());
slave.attr(WIDTH_ATTR, slave.width());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.