我试图将事件绑定到包含参数的textbox
。以下看起来好像应该这样做,但每次页面加载时,它都会被执行。jQuery使用参数绑定和解除绑定事件
jQuery(function(){
jQuery('#textbox').bind('click', EventWithParam('param'));
});
每次加载页面时都会使用该参数调用该事件。这可能不起作用,因为具有参数的事件不受支持。如果是这样,是否有另一条路线?
我试图将事件绑定到包含参数的textbox
。以下看起来好像应该这样做,但每次页面加载时,它都会被执行。jQuery使用参数绑定和解除绑定事件
jQuery(function(){
jQuery('#textbox').bind('click', EventWithParam('param'));
});
每次加载页面时都会使用该参数调用该事件。这可能不起作用,因为具有参数的事件不受支持。如果是这样,是否有另一条路线?
要绑定一个带参数的函数,请使用匿名函数作为参数的闭包。
jQuery(function($) {
var param = 'text';
$('#textbox').click(function() {
EventWithParam(param);
// or just use it without calling out to another function
$(this).text(param);
});
});
您的示例正在执行EventWithParam
函数,然后尝试绑定到该函数调用的结果。
在未指定函数的情况下调用unbind
将取消绑定指定类型事件(包括匿名函数)的所有处理程序。如果你想明确解绑功能,你需要为它提供一个名称,如:
jQuery(function($) {
var param = 'text',
clickCallback = function() {
EventWithParam(param);
// or just use it without calling out to another function
$(this).text(param);
};
$('#textbox').click(clickCallback);
});
的原因是EventWithParam被称为在你的绑定功能就在那里。换句话说,您将点击事件绑定到调用EventWithParam('param')
的结果。这应该工作:
jQuery('#textbox').bind('click',function(){EventWithParam('param')});
现在你已经绑定的甚至,当事件触发,将调用EventWithParam('param')
jQuery(function() {
jQuery('#textbox').click(function() {
EventWithParam(param1,param2,...,paramN);
});
});
function EventWithParam(param1,param2,...,paramN) {
doSomething...;
...;
}
bdukes是完全正确的函数。我添加了我的回复,因为我最近发现了一些与jQuery的绑定/解除绑定函数和匿名函数及其事件名称空间有关的有趣事情。以前在绑定事件上方显示的内容如下所示。
jQuery('#textbox').bind('click',function(){EventWithParam('param')});
解除绑定这甚至用户必须拨打...... jQuery('#textbox').unbind('click');
实际上,删除所有的onclick事件。
现在进入jQuery名称空间。如果你有一个匿名函数,你希望附加到点击事件,然后解除绑定,如下所示。
jQuery('#textbox').bind('click.yourNameSpace',function(){EventWithParam('param')});
然后解除绑定简单的通话将解除绑定功能如下。
jQuery('#textbox').unbind('click.yourNameSpace');
您的onclick事件的其余部分将保持不变。
您可以将事件参数作为第二个参数传递给bind()。它不是直接回调指标的影响,但也许你想使用它:
从jQuery的文档: bind
function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
definatly我会使用的东西 – 2011-05-17 17:27:03
在handler()函数中,可以通过事件“data”字段访问该对象:function handler(evt){var fooValue = evt.data.foo; } – SCO 2012-04-17 08:33:48
如果我再做解除绑定,将它取消绑定匿名函数? jQuery('#textbox')。unbind('click');? – 2009-11-17 19:21:24
是的。请参阅[http://docs.jquery.com/Events/unbind#typefn] – Dan 2009-11-18 18:30:58
这对我不起作用? – 2015-06-16 12:10:45