Pau*_*fer 274 jquery function parameter-passing
我试图使用jQuery的.click调用带参数的函数,但我无法让它工作.
这就是我希望它的工作方式:
$('.leadtoscore').click(add_event('shot'));
哪个叫
function add_event(event) {
blah blah blah }
Run Code Online (Sandbox Code Playgroud)
如果我不使用参数,它可以工作,如下所示:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
Run Code Online (Sandbox Code Playgroud)
但我需要能够将参数传递给我的add_event
函数.
我怎么能做这个特定的事情?
我知道我可以使用.click(function() { blah }
,但是我add_event
从多个地方调用该函数并希望以这种方式执行.
Chr*_*pen 497
为了彻底,我遇到了另一个解决方案,它是jQuery click事件处理程序 1.4.3版中引入的功能的一部分.
它允许您将数据映射传递给事件对象,该事件对象通过jQuery作为第一个参数自动反馈给事件处理函数.数据映射将.click()
作为第一个参数传递给函数,然后是事件处理函数.
这里有一些代码来说明我的意思:
// say your selector and click handler looks something like this...
$("some selector").click({param1: "Hello", param2: "World"}, cool_function);
// in your function, just grab the event object and go crazy...
function cool_function(event){
alert(event.data.param1);
alert(event.data.param2);
}
Run Code Online (Sandbox Code Playgroud)
我知道这个问题在游戏中已经很晚了,但之前的答案让我得到了这个解决方案,所以我希望它能帮到某个人!
Nic*_*ver 77
你需要使用这样的匿名函数:
$('.leadtoscore').click(function() {
add_event('shot')
});
Run Code Online (Sandbox Code Playgroud)
你可以像在示例中那样调用它,只是一个没有参数的函数名,如下所示:
$('.leadtoscore').click(add_event);
Run Code Online (Sandbox Code Playgroud)
但是这个add_event
方法不会得到'shot'
它的参数,而是click
传递给它的回调,它就是event
对象本身......因此它不适用于这种情况,但适用于许多其他方法.如果您需要传递参数,请使用匿名函数...或者,还有另一个选项,使用.bind()
和传递数据,如下所示:
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
Run Code Online (Sandbox Code Playgroud)
并访问它add_event
,如下所示:
function add_event(event) {
//event.data.param == "shot", use as needed
}
Run Code Online (Sandbox Code Playgroud)
use*_*716 35
如果你按照它的方式来称呼它......
$('.leadtoscore').click(add_event('shot'));
Run Code Online (Sandbox Code Playgroud)
...你需要add_event()
返回一个函数,比如......
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
Run Code Online (Sandbox Code Playgroud)
返回该函数并将其用作参数.click()
.
Gra*_*ave 24
我成功使用.on()如下:
$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);
Run Code Online (Sandbox Code Playgroud)
然后在add_event
函数内部,你可以像这样访问'shot':
event.data.event_type
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅.on()文档,其中提供了以下示例:
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
Run Code Online (Sandbox Code Playgroud)
Kev*_*vin 10
是的,这是一个老帖子.无论如何,有人可能会发现它很有用.这是将参数发送到事件处理程序的另一种方法.
//click handler
function add_event(event, paramA, paramB)
{
//do something with your parameters
alert(paramA ? 'paramA:' + paramA : '' + paramB ? ' paramB:' + paramB : '');
}
//bind handler to click event
$('.leadtoscore').click(add_event);
...
//once you've processed some data and know your parameters, trigger a click event.
//In this case, we will send 'myfirst' and 'mysecond' as parameters
$('.leadtoscore').trigger('click', {'myfirst', 'mysecond'});
//or use variables
var a = 'first',
b = 'second';
$('.leadtoscore').trigger('click', {a, b});
$('.leadtoscore').trigger('click', {a});
Run Code Online (Sandbox Code Playgroud)
小智 5
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
Run Code Online (Sandbox Code Playgroud)
将javaScript对象设置为onclick元素:
$imgReload.data('self', $self);
Run Code Online (Sandbox Code Playgroud)
从"this"元素获取Object:
var $p = $(this).data('self');
Run Code Online (Sandbox Code Playgroud)
我得到了简单的解决方案:
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
Run Code Online (Sandbox Code Playgroud)
我的意思是将 valueonclick
事件传递给javascript function sendData()
,初始化为变量并通过 jquery 事件处理程序方法获取它。
这是可能的,因为首先sendData(valueid)
被调用并初始化值。然后在执行 jquery 事件之后并使用该值。
这是直接的解决方案,有关详细信息的解决方案,请转到此处。
归档时间: |
|
查看次数: |
407858 次 |
最近记录: |