我需要通过这个函数作为回调到DOM事件多态函数作为事件回调
var fooo = function() {
$(this).append("foo");
fooo = function() {
$(this).append("bar");
};
};
$("#hover").hover(fooo);
这个例子应该追加“富”,然后在“酒吧” S,但它不工作。我究竟做错了什么?
我需要通过这个函数作为回调到DOM事件多态函数作为事件回调
var fooo = function() {
$(this).append("foo");
fooo = function() {
$(this).append("bar");
};
};
$("#hover").hover(fooo);
这个例子应该追加“富”,然后在“酒吧” S,但它不工作。我究竟做错了什么?
你正在改变分配给fooo
功能,不分配为回调为.hover
功能。
为了清楚起见,当您将函数作为事件的处理程序传递时(例如$().hover(fooo)
),您没有传递fooo
的变量,但它指向的函数。如果您将fooo
重新分配给其他东西,原始函数仍然是作为事件处理程序绑定的那个函数。
如果我想做你想做的事情,那么我会用一个稍微不同的范例。像
var fooo = (function() {
var altBehavior = false;
return function() {
$(this).append(altBehavior ? "bar" : "foo");
altBehavior = true;
}
})();
$("#hover").hover(fooo);
东西实际绑定功能不会改变,但背景下,存在于一样。
这也不行:
var fooo = function() {
$(this).append("foo");
};
$("#hover").hover(fooo);
fooo = function() {
$(this).append("bar");
};
监守你改变了变量,但不传递到hover
事件回调。
您需要指定新功能的回调:
var fooo = function() {
$(this).append("foo");
};
$("#hover").hover(fooo);
fooo = function() {
$(this).append("bar");
};
$("#hover").unbind('hover').hover(fooo);
您正在将函数fooo
分配给悬停事件,然后更改该变量,而不更改处理程序本身。你应该解除绑定然后绑定另一个函数。 hover
是两个事件的简写,所以拆散他们每个人:
var fooo1 = function() {
$(this).append("foo").unbind("mouseenter", fooo1).unbind("mouseleave", fooo1).hover(fooo2);
};
var fooo2 = function() {
$(this).append("bar");
}
$("#hover").hover(fooo1);
** + 1 **很好的接收! – gdoron 2012-04-29 14:25:13
感谢您的解决方案,自我评估功能的作品 - 你指向我[这个](http://jsfiddle.net/tNBx9/2/),这是一个更适合我的情况。谢谢 – janfabian 2012-04-29 14:31:24