jQuery - 在不使用匿名函数的情况下将id元素传递给非匿名回调函数

时间:2010-08-11 21:11:26

标签: javascript jquery

我正在尝试将元素的id传递给storePair

$("#someid").click(storePair($(this).val(),$(this).attr("id"));

使用$(this)不起作用。没有价值。

另一个stackoverflow post建议我使用匿名函数作为StorePair(val,id)的包装器,即

$("#someid").click(function(){storePair($(this).val(),$(this).attr("id")});

这似乎有点迂回......有没有办法调用StorePair并传递值和id而不使用anon函数?

3 个答案:

答案 0 :(得分:3)

您可以使用this storePair函数来获取您所追求的内容,例如:

function storePair() {
  var val = $(this).val();
  var id = this.id;
  //do stuff
}

然后像这样绑定它:

$("#someid").click(storePair);

,使用一个像你已经拥有的匿名函数,圆形或不圆形,它的工作方式是:)

答案 1 :(得分:2)

这不是一个回旋处,它应该以这种方式工作。 click函数(以及任何绑定函数表兄弟)接受在事件触发时要评估的函数对象。

在定义回调时,您正在评估函数storePair,因此它不起作用。

答案 2 :(得分:0)

使用事件数据?

var someId = $("#someid");

someId.bind("click", 
                  { value : someId.val(), id: someId.attr("id") }, 
                  storePair);

但您可以访问在storePairevent.target内引发事件的元素,因此您可以将其包装在$()中并获取函数内的值