我正在使用此功能在元素(.catch)中插入html,并且仅当触摸事件被捕获到不同于前一个元素的新元素时,才需要执行此操作。
首先,我要抓住触摸位置,然后,我要检查新ID 与带有id != lastid
的先前ID 是否不同。但这不起作用, lastid 是 undefined 。当触摸事件被新元素捕获时,如何重用var lastid
的值?
var lastid ;
$('.catch').bind('touchmove', function (evt) {
var touch = evt.originalEvent.touches[0];
var element = $(document.elementFromPoint(touch.clientX, touch.clientY));
var id = document.elementFromPoint(touch.clientX, touch.clientY).id;
if ( element.hasClass('catch') && id != lastid){
//Changing the value
lastid = id ;
// execute the rest of the function here
// ....
// ....
return lastid;
}
});
谢谢!
edit: var lastid = id;
答案 0 :(得分:2)
请勿在函数内部使用var
。只需使用lastid = id
,并指定var
再次声明 在闭包(即函数)内的另一个具有相同名称的变量,将{{1} }在函数外部声明,并使其在函数内部无法访问(您无法访问这两个值)
lastid
答案 1 :(得分:1)
JavaScript变量具有功能范围。
if ( element.hasClass('catch') && id != lastid)
{
//Changing the value
var lastid = id ;
// execute the rest of the function here
// ....
// ....
return lastid;
}
这将创建一个新的局部变量lastid,并且所需的变量不会被更新。删除“ var”以将值分配给在函数的本地范围之外声明的变量“ lastid”。
if ( element.hasClass('catch') && id != lastid)
{
//Changing the value
lastid = id ;
// execute the rest of the function here
// ....
// ....
return lastid;
}
要处理lastid的不确定状态,请使用一些合法的值对其进行初始化。