我正在尝试将元素的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函数?
答案 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);
但您可以访问在storePair
到event.target
内引发事件的元素,因此您可以将其包装在$()
中并获取函数内的值