Ich fing an, eine Todo-Liste mit jQuery Mobile zu erstellen, um es besser zu lernen. Ich höre auf die Ereignisse aus den Tasten eines Menüs wie diese kommen:Stringvergleich gibt false zurück. Seltsames JavaScript-Verhalten mit jQuery mobile. [Code eingeschlossen]
me.selectedTarget = me.menuNode.find(".ui-btn").first();
me.menuNode.on("click", ".ui-btn", function (e) {
var target = $(e.currentTarget)
,targetText = target.text();
console.debug("Click on'", targetText,"'");
if(target === me.selectedTarget) return;
if(targetText == "View To Do "){
core.pub("view:todo");
} else if(targetText == "View Done ") {
core.pub("view:done");
} else {
me.selectedTarget.click();
}
me.selectedTarget = target;
});
Die Variable targetText hat einen extra „“ Raum aus irgendeinem Grunde am Ende. Ich habe 3 Tasten, aber die dritte ist ein bisschen speziell - nicht relevant -.
Mein Problem ist, dass ich auf der letzten else-Klausel immer bin immer. targetText wird niemals mit "View To Do" oder "View Done" gleichgesetzt.
Warum ist "View Done" nicht = = "View Done"? ~ X (
Meine Vermutung ist, dass der nachstehende Leerzeichen fehlt, warum nicht $ .trim ("View Done") == $ .trim ("View Done")? Ihre Zeichenfolge hat möglicherweise ein \ t \ r oder \ n erhalten, das als Leerzeichen im Dubugger angezeigt wird. –
Vielleicht hilft '$ .trim'. Entfernen Sie extra 'Leerzeichen' aus Zeichenfolgenliteralen und trimmen Sie 'targetText'->' $ .trim (targetText) == "View Done" ' – Engineer
Ich wusste nicht, dass es in jQuery eine Trimmung gab: O –