Javascript 需要帮助传递$(this)以进行.on(“单击”)回调吗
这是我第一次使用函数回调,而不是使用匿名函数来处理on.(“click”)事件。console.log将对象键显示为未定义,如果我将$(this)ass传递给回调参数,它将不起作用 谁能帮我把这件事弄清楚吗。任何帮助都将不胜感激Javascript 需要帮助传递$(this)以进行.on(“单击”)回调吗,javascript,jquery,Javascript,Jquery,这是我第一次使用函数回调,而不是使用匿名函数来处理on.(“click”)事件。console.log将对象键显示为未定义,如果我将$(this)ass传递给回调参数,它将不起作用 谁能帮我把这件事弄清楚吗。任何帮助都将不胜感激 function getFreelancersInfo(elem){ var id = elem.attr("id"); /*@div_wrapper stores arbitrary data about the freelan
function getFreelancersInfo(elem){
var id = elem.attr("id");
/*@div_wrapper stores arbitrary data about the freelancer and also acts as a wrapper for
*each freelancer */
var div_wrapper = $("div#"+id);
var freelancer_info_obj = {
first_name : div_wrapper.attr("data-first-name"),
last_name : div_wrapper.attr("data-last-name"),
email : div_wrapper.attr("data-email")
};
//TODO create and send welcome email
console.log(freelancer_info_obj);
return false;
}
$(".approve").on("click",getFreelancersInfo() );
您需要将函数引用作为click回调传递,其中
this
将引用事件所针对的元素
function getFreelancersInfo() {
//here this refers to the clicked element
var elem = $(this);
var id = elem.attr("id");
/*@div_wrapper stores arbitrary data about the freelancer and also acts as a wrapper for
*each freelancer */
var div_wrapper = $("div#" + id);
var freelancer_info_obj = {
first_name: div_wrapper.attr("data-first-name"),
last_name: div_wrapper.attr("data-last-name"),
email: div_wrapper.attr("data-email")
};
//TODO create and send welcome email
console.log(freelancer_info_obj);
return false;
}
$(".approve").on("click", getFreelancersInfo);
如果您不想更改方法
getfrequelersinfo
,则可以使用具有处理程序的匿名函数,该处理程序可以调用getfrequelersinfo
function getFreelancersInfo(elem) {
var id = elem.attr("id");
/*@div_wrapper stores arbitrary data about the freelancer and also acts as a wrapper for
*each freelancer */
var div_wrapper = $("div#" + id);
var freelancer_info_obj = {
first_name: div_wrapper.attr("data-first-name"),
last_name: div_wrapper.attr("data-last-name"),
email: div_wrapper.attr("data-email")
};
//TODO create and send welcome email
console.log(freelancer_info_obj);
return false;
}
$(".approve").on("click", function () {
return getFreelancersInfo($(this))
});
非常感谢你的解释。现在可以了!:)