2016-05-19 2 views
0

Ich habe ein Problem mit einem Phonegap Build, eine Funktion zwei Mal ausgeführt (auf meinem Handy mit dem Phonegap Build), anders, wenn ich das Skript auf Firefox ausführen.Js Funktion run 2 Mal auf Phonegap Build

Das ist ein Teil meiner Code:

$(".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; 
} 

Wenn ich auf Firefox mein Code ausführen, wenn ich auf einem anderen blackcase dann auf schwarzem Fall klicken, es sind die Werte tauschen und ich habe zwei Warnungen:

Swap b

Swap b b b2

alles in Ordnung ist, aber auf meinem Handy mit meinem phongap Build-Test, wenn ich auf blackcase klicken dann noch die Werte blackcase nicht tauschen und ich habe 4 Warnungen:

Swap b

Swap b b

Swap b b2

Swap b b b2

Ich denke also, Werte Tauschen Sie, aber wechseln Sie erneut, so dass die Werte gleich sind wie die Anfangswerte (so wie sich nichts ändert).

Vielen Dank für Ihre Hilfe!

+0

Klingt, als ob etwas Ihren Click-Handler mehr als einmal hinzufügt. wo ist '$ (". blackcase "). click (function() {})' called von –

+0

Danke, ja, aber ich verstehe nicht, warum es auf Firefox ok ist, gibt es eine js-Spezifikation für phonegap oder andere denken so ? – Sanalol

Antwort

2

Wahrscheinlich hat es auch das Touch-Ereignis ausgelöst, während es in der mobilen Plattform ausgeführt wurde. Versuchen Sie, ein Berührungsereignis zu registrieren, um zu testen, ob es ausgelöst wird.

+0

Vielen Dank für Ihre Antwort, ich sollte versuchen, Klickereignis durch Berührung zu ersetzen? – Sanalol

+0

Wenn Sie für mobile Plattform entwickelt werden, klicken Sie auf klicken sollte durch Touch-Ereignis ersetzt werden. – Choo