Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery';s.单击-将参数传递给用户函数_Jquery_Function_Parameter Passing - Fatal编程技术网

jQuery';s.单击-将参数传递给用户函数

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

我正在尝试使用jQuery.click调用带有参数的函数,但无法使其工作

这就是我希望它工作的方式:

$('.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