Das Schlüsselwort this
kann nicht in JavaScript festgelegt werden. Es wird automatisch von JavaScript generiert und "bezieht sich immer auf den" Eigentümer "der Funktion, die wir gerade ausführen, oder vielmehr auf das Objekt, für das eine Funktion eine Methode ist".
— http://www.quirksmode.org/js/this.html
Sie haben ein Problem in Ihrem Code (versuchen, den Parameter des submit_form() -Funktion diese zu nennen). Die Art und Weise, in der Ihr Code angelegt wird, macht jedoch nicht deutlich, ob Sie den angeklickten Anker als jQuery-Objekt oder als DOM-Knoten für den Anker übergeben möchten.
$(document).ready(function() {
$('.nav a').click(function() {
$anchor = $(this); // Capture the jQuery-wrapped anchor for re-use; 'this' is an anchor because it matched $('.nav a')
var direction = $anchor.attr("name"); // $variable_name is a standard pattern in jQuery to indicate variables that are jQuery-wrapped instead of DOM objects
submit_form_jquery($anchor); // Providing versions of submit_form function for passing either jQuery-wrapped object or DOM object
submit_form_dom(this); // Pick the one you prefer and use it
});
function submit_form_jquery($my_anchor) { // Function with well-named parameter expecting a jQuery-wrapped object
// do some stuff with '$my_anchor'
// $my_anchor here is assumed to be a jQuery-wrapped object
}
function submit_form_dom(anchor) { // Function named expecting a DOM element, not a jQuery-wrapped element
// do some stuff with 'anchor'
// anchor here is assumed to be a DOM element, NOT wrapped in a jQuery object
}
});
Auf einem meist in keinem Zusammenhang zur Kenntnis, werden Sie wahrscheinlich wollen return false;
entweder oder verwenden Event.preventDefault() von der Seite zu halten, die href
auf dem Anker folgende, auf den geklickt wurde. Sie können das wie folgt tun:
$(document).ready(function() {
$('.nav a').click(function(event) {
event.preventDefault();
// And now do what you want the click to do
});
});
Sie tun es bereits richtig. Benenne einfach die Variable in 'function submit_form (this) {}' in etwas anderes wie 'function submit_form (element) {}'. –
Bitte verwenden Sie Javascript so, wie es verwendet werden soll (keine Notwendigkeit, den Kontext als Parameter zu übergeben): 'submit_form.call (this)', 'submit_form.apply (this)', oder sogar jQuery, wenn das die einzige Sache ist Sie verstehen: 'jQuery.proxy (submit_form, this)' –