我試圖將事件綁定到包含參數的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