2 Stimmen

Unerwartetes Verhalten von JavaScript Split-Funktion (Chrome/Firefox)

Ich füge eine Zeichenkette (z. B. 'Bob Smith') aus einem jQuery-Klick-Ereignis hinzu, das mit der on Funktion . . .

$(".vendorLookup").on("click", { fullName: $(this).text() }, displayAddy);

Im displayAddy-Handler für das Klick-Ereignis extrahiere ich die Zeichenfolge (Vor- und Nachname einer Person) und splitte den Vor- und Nachnamen auf .

var name = event.data.fullName;
var parts = name.split(" ");

Der IE kann dies herausfinden, aber Chrome und Firefox werden nicht geteilt, es sei denn, ich verwende den regulären Ausdruck split(/\s/) (es sei denn, ich verwende den Tryit-Code-Editor von w3schools.com und dann funktioniert es).

Frage: Was genau ist hier los und wann werde ich später beim Parsen von Leerzeichen browserübergreifend davon betroffen sein?

(Hinweis: Ich glaube nicht, dass es wichtig ist, aber ich führe dieses Skript auf einer Wiki-Seite in SharePoint 2010 aus)

1voto

Brombomb Punkte 6858

Ich bin mir nicht sicher, was da los ist (ich habe es getestet und sehe ein seltsames Verhalten), aber Sie können das Problem umgehen, indem Sie etwas wie folgt tun

function displayAddy() {

    var parts = $(this).text().split(" ");

    $('#fname').html(parts[0]);
    $('#lname').html(parts[1]);
}

$('#name').on("click", displayAddy);

Da das Ereignis an einen Callback weitergegeben wird, hat der Callback bereits eine this Objekt. In diesem Fall ist das this Objekt wird ein DOM-Objekt mit der Klasse #name .

Hier ist ein Beispiel in Aktion zu sehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X