2013-12-09 3 views
0

Предположите форму с идентификатором "serialform" на странице html.jquery this.attr ("action") представляет форму?

Следующий JavaScript работает должным образом.

$("#serialform").submit(function(event) { 
    var action = $("#serialform").attr("action"); 
    var serial = $("#serial").val() 
    ... 
    return event.preventDefault(); 
}); 

Однако, если я заменю первую строку функции использовать «это»:

$("#serialform").submit(function(event) { 
    var action = this.attr("action"); 
    var serial = $("#serial").val() 
    ... 
    return event.preventDefault(); 
}); 

Тогда форма представляет вместо того, чтобы просто возвращая атрибут действия. this относится к элементу формы (согласно firebug).

Я бы подумал, что this будет эквивалентно $("#serialform"). В любом случае, я хочу получить атрибут действия формы, которая отправляется.

Я использую jQuery 2.0.3.

+1

замените 'this.attr' на' $ (this) .attr' – MackieeE

+0

Попробуйте изменить 'this' на' $ (this) '. – j08691

+0

Потому что вы получаете сообщение об ошибке «TypeError: undefined не является функцией» или что-то в этом роде. [Узнайте, как ** отлаживать ** JavaScript] (http://www.creativebloq.com/javascript/javascript-debugging-beginners-3122820). И, пожалуйста, прочитайте учебник jQuery (http://learn.jquery.com/events/event-basics/). Он объясняет, что происходит внутри обработчика событий и что это означает. –

ответ

5

this является ссылкой на узел DOM , а не завернутый узел jQuery. Этот узел DOM не реализует метод .attr, поэтому он выдает ошибку.

Перед вызовом метода jQuery необходимо обернуть узел DOM в объект jQuery, например: $(this).attr('action').

3

Он представляет, потому что this.attr выдает ошибку (что-то вроде «объект независимо не имеет какого-либо метода„атр“), то в дальнейшем код не запускается и поведение по умолчанию не предотвращено. Проверьте вашу консоль.

Внутри обработчик событий JQuery, this является элементом DOM, который вызвал событие (форму, в данном случае). это не объект JQuery, так что он не имеет attr метод.

Смежные вопросы