this
Hasło nie może być ustawione w JavaScript. Jest automatycznie generowany przez JavaScript i "zawsze odnosi się do" właściciela "funkcji, którą wykonujemy, lub raczej do obiektu, którego funkcja jest metodą".
— http://www.quirksmode.org/js/this.html
masz jeden problem w kodzie (próbując wymienić parametr funkcji submit_form() do tego). Jednak sposób, w jaki układany jest kod, nie wyjaśnia, czy zamierzasz przekazywać zakotwiczoną klikniętą jako obiekt jQuery lub jako węzeł DOM dla zakotwiczenia.
$(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
}
});
Na większości niepowiązanych notatki, prawdopodobnie będziesz chciał albo return false;
lub użyj event.preventDefault(), aby utrzymać stronę z po href
na kotwicy, który został kliknięty. Możesz to zrobić w następujący sposób:
$(document).ready(function() {
$('.nav a').click(function(event) {
event.preventDefault();
// And now do what you want the click to do
});
});
Już to robisz poprawnie. Wystarczy zmienić nazwę zmiennej w 'function submit_form (this) {}' na coś innego jak 'function submit_form (element) {}'. –
Proszę używać javascriptu w sposób, w jaki zamierzano go używać (nie trzeba przekazywać kontekstu jako parametru): 'submit_form.call (this)', 'submit_form.apply (this)', lub nawet używać jQuery, jeśli to jedyna rzecz rozumiesz: 'jQuery.proxy (submit_form, this)' –