我在使用phonegap构建时出现问题,一个函数运行两次(在我的手机上使用phonegap构建),当我在firefox上执行脚本时,会有所不同。
这是我的代码的一部分:
$(".blackcase").click(function(e)
{
if (elemIsEmpty($(this)) && isSelected("black"))
{
return;
}
if (isSelected("white"))
{
//swap white to black
alert("swap b to w");
if ($(this).html() == valueoffirst.html())
{
$(valueoffirst.html(""));
alert("swap b to w1");
}
else
{
swapValuesFromTo($("#" + selectedCase.id), $(this));
alert("swap b to w 2");
}
clearSelectedCase();
removeSelectionWithRed();
return;
}
if (isSelected("black"))
{
alert("swap b to b");
$("#" + selectedCase.id).removeClass('red');
if ($(this).html() == valueoffirst.html() && $(this).attr('id') != valueoffirst.attr('id'))
{
$(valueoffirst.html(""));
alert("swap b to b1");
}
else
{
swapValuesFromTo($("#" + selectedCase.id), $(this));
alert("swap b to b 2");
}
clearSelectedCase();
removeSelectionWithRed();
return;
}
//alert("black is selected");
selectWithRed($(this));
updateSelectedCase("black", $(this).attr("id"), $(this).html());
valueoffirst = $(this);
});
function removeSelectionWithRed()
{
$('div').removeClass('red');
}
function selectWithRed(element)
{
removeSelectionWithRed();
element.addClass('red');
}
function updateSelectedCase(color, id)
{
selectedCase.color = color;
selectedCase.id = id;
}
function moveValueFromTo(elemFrom, elemTo)
{
elemTo.html(elemFrom.html());
setValueToElem("", elemFrom);
}
function setValueToElem(value, elem)
{
elem.html(value);
}
function swapValuesFromTo(elemFrom, elemTo)
{
var fromValue = elemFrom.html();
var toValue = elemTo.html();
setValueToElem(fromValue, elemTo);
setValueToElem(toValue, elemFrom);
}
function isSelected(color)
{
return selectedCase.color == color;
}
function clearSelectedCase()
{
selectedCase.color = "";
selectedCase.id = "";
}
function elemIsEmpty(elem)
{
return elem.html().length == 0;
}
当我在firefox上运行我的代码时,如果我点击黑色案例然后在另一个黑色案例上,它会交换值并且我有两个警报:
将b换成b
将b交换为b2
一切都还可以,但是在我的手机上进行phongap构建测试,如果我点击blackcase然后另一个blackcase,值不会交换,我有4个警报:
将b换成b
将b交换为b2
将b换成b
将b交换为b2
所以我认为值交换但重新交换,因此值与起始值相同(就像没有变化一样)。
非常感谢你的帮助!
答案 0 :(得分:2)
在移动平台上运行时,也可能会触发触摸事件。尝试注册触摸事件以测试它是否被触发。