jQuery';s.单击-将参数传递给用户函数
我正在尝试使用jQuery.click调用带有参数的函数,但无法使其工作 这就是我希望它工作的方式:jQuery';s.单击-将参数传递给用户函数,jquery,function,parameter-passing,Jquery,Function,Parameter Passing,我正在尝试使用jQuery.click调用带有参数的函数,但无法使其工作 这就是我希望它工作的方式: $('.leadtoscore')。单击(添加事件('shot') 哪个叫 function add_event(event) { blah blah blah } 如果我不使用参数,它会起作用,如下所示: $('.leadtoscore').click(add_event); function add_event() { blah blah blah } $('.leadt
$('.leadtoscore')。单击(添加事件('shot')代码>
哪个叫
function add_event(event) {
blah blah blah }
如果我不使用参数,它会起作用,如下所示:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
但是我需要能够将一个参数传递给我的add\u event
函数
我该如何做这件具体的事情
我知道我可以使用。单击(function(){blah}
,但我从多个位置调用add_event
函数,并希望这样做。您需要使用如下匿名函数:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
您可以像在示例中一样调用它,只需一个不带参数的函数名,如下所示:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
但是add\u event
方法不会将'shot'
作为参数,而是将任何单击的内容传递到它的回调,即事件
对象本身…因此它在这种情况下不适用,但适用于许多其他对象。如果需要传递参数,请使用匿名函数…或者,还有一个选项,使用并传递数据,如下所示:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
并在add_event
中访问它,如下所示:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
如果你这么说的话
$('.leadtoscore').click(add_event('shot'));
…您需要add\u event()
返回一个函数,如
function add_event(param) {
return function() {
// your code that does something with param
alert( param );
};
}
函数返回并用作的参数。单击()
为了彻底,我遇到了另一个解决方案,它是jQuery版本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);
}
我知道这个问题已经晚了,但是之前的答案让我找到了这个解决方案,所以我希望它能帮助别人
$imgReload.data('self', $self);
$imgReload.click(function (e) {
var $p = $(this).data('self');
$p._reloadTable();
});
将javaScript对象设置为onclick元素:
$imgReload.data('self', $self);
从“this”元素获取对象:
是的,这是一篇老文章。不管怎样,有人可能会发现它很有用。下面是另一种向事件处理程序发送参数的方法
//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});
我成功地使用了.on(),如下所示:
然后在add_event
函数中,您可以访问如下“shot”:
$('.leadtoscore').click(add_event);
function add_event() {
blah blah blah }
$('.leadtoscore').click(function() {
add_event('shot')
});
$('.leadtoscore').click(add_event);
$('.leadtoscore').bind('click', { param: 'shot' }, add_event);
function add_event(event) {
//event.data.param == "shot", use as needed
}
event.data.event_type
有关更多信息,请参阅,其中提供了以下示例:
function myHandler( event ) {
alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
我得到了一个简单的解决方案:
<button id="btn1" onclick="sendData(20)">ClickMe</button>
<script>
var id; // global variable
function sendData(valueId){
id = valueId;
}
$("#btn1").click(function(){
alert(id);
});
</script>
点击我
var id;//全局变量
函数sendData(valueId){
id=valueId;
}
$(“#btn1”)。单击(函数(){
警报(id);
});
我的意思是将值onclick
事件传递给javascript函数sendData()
,初始化为变量,并通过jquery事件处理程序方法获取它
这是可能的,因为首先调用sendData(valueid)
并初始化该值。然后在jquery事件执行后,执行get并使用该值
这是直截了当的解决方案,对于详细的解决方案,只需使用jquery属性即可。如果您不想做所有这些,并且需要一种快捷、简单的方法
并根据需要编程的条件设置属性,
请参见下面的示例
$(selector).attr('customattribute', value);
然后稍后检索属性值
使用
你的问题是,$('.leadtoscore')。单击(添加事件);
与$('.leadtoscore')不同。单击(添加事件('.leadtoscore'));
。第一个传递函数,第二个传递函数调用,因此该函数的结果传递给。单击()
相反。这不是你想要的。以下是你想要的普通JavaScript术语:
$('.leadtoscore')。单击(添加事件.bind(此“快照”);
将函数传递到。单击()
,与第一个示例一样,但带有绑定的this
和在调用时可以访问的参数。当您说just时,这是否意味着just?其次,这是否意味着我可以使用$(this)在我的add_event函数中,就像我通常在匿名函数中一样?@phoffer-是的,“just”表示没有参数,只有函数名,它是对函数的引用,而不是运行要分配给click
处理程序的函数的结果。在匿名方法和.bind()中
上面的示例您可以使用此
,它将引用您单击的.loadtoscore
(如您所料)。在最后一个示例中,在添加事件(事件)
中,同样正确,请使用此
或$(此)
这将是您想要的。@phoffer:您必须显式地传递元素才能使用它,例如:function(){add_event('shot',$(this));}
和function add_event(event,element){…}
element
将是jQuery元素(如尼克所述,它与bind()
一起工作)@Felix-他也可以在函数中使用$(this)
,例如:@jAndy-感谢您发布包含事件
参数的示例。我应该包括它。:o)这是从patricks
答案中采用的,我认为这是一个很好的解决方案:对我来说,我必须删除数据部分,例如alert(event.param1);我使用的是jquery 1.10.2,也许他们改变了什么?我在服务器端动态创建对象,并将单击事件绑定为:r.OnClientClick=“imageClicked({param1:'”+obj.Command+“});return false”;然后在客户端我有:函数imageClicked(event){if(event.param1==“gotoprevious”){…如果我使用event.data.param1,它会说它是未定义的。现在我在这里输入了它,我可以看到区别,d'oh!@Family-Haaha没问题,很乐意提供帮助,即使是通过注释;)@totymedli-我想你总可以把它称为e