2016-03-21 6 views
0

HINWEIS: Diese gesamte Frage basiert auf einem Szenario, in dem das Problem ein Syntaxfehler war; Es gab eigentlich KEIN Problem mit "das". Die Frage sollte geschlossen werden.Kann ich nicht auf Attribute von 'this' zugreifen, wenn `this` durch eine Funktion übergeben wird?

Zum Beispiel sind die folgenden Werke:

$('.base-icons').click(function() { 
    selectedIcon($(this).attr("src").split(/\/(\/*)/)); 
}); 

var selectedIcon = function(myObj) { 
    console.log(myObj); 
}; 

und druckt die verkürzte Zeichenfolge wie erwartet. Die Folge funktioniert nicht:

$('.base-icons').click(function() { 
    selectedIcon(this); 
}); 

var selectedIcon = function(myObj) { 
    console.log($(myObj).attr("src").split(/\/(\/*)/)[6]); 
}; 

wie es undefined druckt. Warum? Vielen Dank.

+0

@JeremyBanks Sind Sie sicher? http://stackoverflow.com/a/261682/5137782 – 8protons

+0

_ "Zum Beispiel funktioniert das folgende:' selectedIcon ($ (this) .attr ("src"). split (/ \/(\ /! *) /) [6]) var selectedIcon = funktion (myObj) { console.log (myObj) } '" _ Können Sie einen Stacksnippets erstellen, um zu demonstrieren? – guest271314

+0

@Ramanlfc Noch habe ich es oft gemacht ... – 8protons

Antwort

1

Zum Beispiel sind die folgenden Werke:

selectedIcon($(this).attr("src").split(/\/(\/!*)/)[6]) 

var selectedIcon = function(myObj) { 
    console.log(myObj) 
} 

und druckt die verkürzte Zeichenfolge wie erwartet. Das folgende funktioniert nicht:

selectedIcon(this) 

var selectedIcon = function(myObj) { 
    console.log($(myObj).attr("src").split(/\/(\/!*)/)[6]) 
} 

wie es druckt undefined. Warum? Vielen Dank.

selectedIcon ist undefined wenn bei javascript in Frage gestellt wird, was zu einem TypeError

Beiden Beispielen in Frage sollte einen Fehler zurück.

Uncaught TypeError: selectedIcon is not a function 

window.onerror = function(e) { 
 
    console.info(e); 
 
    alert(e); 
 
} 
 

 
selectedIcon("abc"); 
 

 
var selectedIcon = function (myObj) { 
 
    alert(myObj) 
 
}

+0

Warum gibt dies keinen Fehler zurück? Ich rufe diese Funktionen auf, bevor sie definiert sind. https://jsfiddle.net/j1t9mvur/9/ – 8protons

+0

@ 8protons _ "Warum gibt das keinen Fehler zurück? Ich rufe diese Funktionen auf, bevor sie definiert sind." _ Weil Sie die Funktionen nicht aufrufen, bevor sie definiert sind https://jsfiddle.net/j1t9mvur/9/. Wenn Sie zum Beispiel '.click()' an '.click (handler) angeklickt haben, wird ein Fehler bei' console' protokolliert. Https://jsfiddle.net/j1t9mvur/10/ – guest271314

+0

Liegt das daran, dass der jQuery-Klick passiert? nach der Definition? – 8protons

0

Ja, können Sie Attribute von this zugreifen, wenn this durch eine Funktion übergeben.

0

Sie können auf die Attribute von diesem wie folgt zugreifen.

$(this).attr("href");

Verwandte Themen