jquery this.attr(“action”)提交表单?

时间:2013-12-09 16:55:09

标签: javascript jquery

在html页面中假设一个id为“serialform”的表单。

以下JavaScript按预期工作。

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

但是,如果我替换函数的第一行使用“this”:

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

然后表单提交而不是简单地返回action属性。 this指的是表单元素(根据firebug)。

我原以为this等同于$( "#serialform" )。无论如何,我想获取正在提交的表单的action属性。

我正在使用jQuery 2.0.3。

2 个答案:

答案 0 :(得分:5)

this是对DOM节点的引用,而不是对包装的jQuery节点的引用。此DOM节点未实现.attr方法,因此会引发错误。

在调用jQuery方法之前,需要将DOM节点包装在jQuery对象中,如下所示:$(this).attr('action')

答案 1 :(得分:3)

它提交是因为this.attr引发了错误(类似于“对象无论什么方法'attr'),然后进一步的代码没有运行,并且没有阻止默认行为。检查你的控制台。

在jQuery事件处理程序中,this是触发事件的DOM元素(在本例中为表单)。它不是jQuery对象,因此它没有attr方法。