2016-04-20 7 views
0

Ich versuche, den folgenden Code zu verwenden, um einen (Hashtag) an die URL anzuhängen, um Lightboxes zu schließen, die unter Verwendung des CSS-Attributs :target erstellt wurden. Dieses Skript wird am Keydown des "esc" Schlüssels einwandfrei ausgeführt, gibt aber example.com/#undefined anstelle von example.com/# zurück.Warum & Wo wird dieses Skript undefiniert zurückgegeben?

Ich entschuldige mich dafür, ein JS Anfänger zu sein, aber wie definiere ich es, nur die einzige # zurückgeben?

$(document).on('keydown', function (e) { 
    if (e.keyCode === 27) { 
     var href = this.href; 
     window.location.hash = href; 
    } 
}); 

Returns #undefined statt nur #.

+1

versuchen 'var href = e.target.href verwenden || '; ', im Handler bezieht sich" this "auf das Dokumentobjekt, das nicht die Eigenschaft' href' hat, so dass' this.href' undefined zurückgibt. –

+0

Weil 'dies' zweifellos keine 'href'-Eigenschaft hat oder 'this' versäumt es zu zielen. Verwenden der Browserkonsole zum Debuggen 'console.log (this);' Wenn das undefined zurückkommt, dann ist 'this' das Problem, das ich vermute. – NewToJS

+0

Kannst du das HTML-Beispiel dafür angeben, wo die 'href' von –

Antwort

2

Die Antwort ist, in Ihrem Handler this bezieht sich auf das document Objekt, das href Eigenschaftswert nicht hat. Ihre href Variable hat also den Wert undefined, daher wird der Hash als undefined aktualisiert.

nun eine Lösung für das Problem wird auf Details ab, die nicht in der Frage geteilt wird, wie wie die HTML aussieht, wann und wie sie annehmen, um zu arbeiten, etc

Sie möchten, dass Sie die href bekommen, das Zielelement, dann können Sie

var href = e.target.href || ''; 

oder

var href = $(e.target).closest('[href]').attr('href') || ''; 
+0

Ersetzen Sie die 'var href' durch Ihre aktualisierte' var href = e.target.href || '; 'code hat es perfekt behoben. –

+0

@MattBeckman Sie müssen besser 'var href = $ (e.target) .closes ('[href]') verwenden. Attr ('href') || B. ein Anker kann andere Elemente enthalten –

Verwandte Themen