jquery - 重载函数,丢失变量值

时间:2016-06-22 10:10:57

标签: javascript jquery

让我说我有这个功能:

$("#click").click(function myFunction(){
   var id = $(this).attr("id");
   myFunction();
});

现在,显然,在click事件之后,id ==“click”,但是当函数重新加载时,id == undefined。 有没有办法可以在不重新定义变量的情况下重新加载函数?

2 个答案:

答案 0 :(得分:0)

你似乎在递归地调用一个闭包函数。在闭包函数myFunction是点击事件处理程序的callback的上下文中,$(this)解析为执行click的元素,因此您将能够获取函数中的id属性。但是,当您再次致电时,$(this)并未解析为同一元素,这就是您idundefined的原因。

答案 1 :(得分:0)

您以递归方式调用闭包函数。这是一个工作副本,您可以使用回调函数来访问变量:

$("#click").click(function() {
   var id = $(this).attr("id");
   console.log("click id: " + id);
   myFunction(id);
});

function myFunction(id) {
   console.log("id: " + id);
}

JSFiddle Example