El this
palabra clave no se puede establecer en JavaScript. Es generado automáticamente por JavaScript y "siempre se refiere al" propietario "de la función que estamos ejecutando, o más bien, al objeto que una función es un método de".
— http://www.quirksmode.org/js/this.html
Usted tiene un problema en su código (tratando de nombrar el parámetro de la función submit_form() para esto). Sin embargo, la forma en que se distribuye su código no deja en claro si tiene la intención de pasar el ancla hecha clic como un objeto jQuery o como el nodo DOM para el anclaje.
$(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
}
});
En una nota en su mayoría sin relación, es probable que desee que sea return false;
o utilizar event.preventDefault() para mantener la página de detrás de las href
en el anclaje que se hizo clic. Puede hacerlo de la siguiente manera:
$(document).ready(function() {
$('.nav a').click(function(event) {
event.preventDefault();
// And now do what you want the click to do
});
});
Ya lo hace correctamente. Simplemente cambie el nombre de la variable en 'function submit_form (this) {}' a otra cosa como 'function submit_form (element) {}'. –
Utilice javascript de la manera en que estaba destinado a ser utilizado (no es necesario pasar el contexto como parámetro): 'submit_form.call (this)', 'submit_form.apply (this)', o incluso use jQuery si eso es lo único usted entiende: 'jQuery.proxy (submit_form, this)' –