我试图使用jQuery的.click调用带有参数的函数,但我不能让它工作。

这就是我想要的工作方式:

$ (' .leadtoscore ') .click (add_event('照片'));

这电话

function add_event(event) {
    blah blah blah }

如果我不使用参数,它就会工作,就像这样:

$('.leadtoscore').click(add_event);
function add_event() {
    blah blah blah }

但是我需要能够将参数传递给add_event函数。

我该怎么做这件事呢?

我知道我可以使用.click(function() {blah},但我从多个地方调用add_event函数,并想这样做。


当前回答

你需要像这样使用一个匿名函数:

$('.leadtoscore').click(function() {
  add_event('shot')
});

你可以像在例子中那样调用它,只是一个没有参数的函数名,就像这样:

$('.leadtoscore').click(add_event);

但是add_event方法不会像它的参数一样得到'shot',而是任何传递给它的回调的点击,这是事件对象本身…所以在这种情况下不适用,但在其他情况下适用。如果需要传递参数,请使用匿名函数…或者,还有另一个选项,使用.bind()并传递数据,就像这样:

$('.leadtoscore').bind('click', { param: 'shot' }, add_event);

并在add_event中访问它,像这样:

function add_event(event) {
  //event.data.param == "shot", use as needed
}

其他回答

如果你用你曾经的方式来形容……

$('.leadtoscore').click(add_event('shot'));

...你需要让add_event()返回一个函数,像…

function add_event(param) {
    return function() {
                // your code that does something with param
                alert( param );
           };
}

返回该函数并用作.click()的参数。

你需要像这样使用一个匿名函数:

$('.leadtoscore').click(function() {
  add_event('shot')
});

你可以像在例子中那样调用它,只是一个没有参数的函数名,就像这样:

$('.leadtoscore').click(add_event);

但是add_event方法不会像它的参数一样得到'shot',而是任何传递给它的回调的点击,这是事件对象本身…所以在这种情况下不适用,但在其他情况下适用。如果需要传递参数,请使用匿名函数…或者,还有另一个选项,使用.bind()并传递数据,就像这样:

$('.leadtoscore').bind('click', { param: 'shot' }, add_event);

并在add_event中访问它,像这样:

function add_event(event) {
  //event.data.param == "shot", use as needed
}

我得到了一个简单的解决方案:

 <button id="btn1" onclick="sendData(20)">ClickMe</button>

<script>
   var id; // global variable
   function sendData(valueId){
     id = valueId;
   }
   $("#btn1").click(function(){
        alert(id);
     });
</script>

我的意思是,将onclick事件的值传递给javascript函数sendData(),初始化到变量,并通过jquery事件处理程序方法获取它。

这是可能的,因为首先调用sendData(valueid)并初始化值。然后在jquery事件之后执行get并使用该值。

这是直接的解决方案,详细解决方案请点击这里。

我成功地像这样使用.on():

$('.leadtoscore').on('click', {event_type: 'shot'}, add_event);

然后在add_event函数中,你可以像这样访问'shot':

event.data.event_type

有关更多信息,请参阅.on()文档,其中提供了以下示例:

function myHandler( event ) {
  alert( event.data.foo );
}
$( "p" ).on( "click", { foo: "bar" }, myHandler );
      $imgReload.data('self', $self);
            $imgReload.click(function (e) {
                var $p = $(this).data('self');
                $p._reloadTable();
            });

设置javaScript对象为onclick元素:

 $imgReload.data('self', $self);

从"this"元素获取对象:

 var $p = $(this).data('self');