3

我有这个基本的例子:

<!doctype HTML>
<html>
<head>
    <script src="jquery-1.4.2.min.js" type="text/javascript"></script>
    <script>
        $(document).ready(function(){
            $("#showAction").click(function(){
                alert($("#myForm").attr("action"));
            });
        });
    </script>
</head>
<body>
<form id="myForm">
    <input type="text" name="action" value="myAction" />
</form>
<input type="button" value="click me" id="showAction" />
</body>
</html>

当您单击“点击我”时,您可以看到标签

$("#myForm").attr("action"); 

实际上并不返回元素的属性。它返回名为“action”的表单的子项。

这是预期的行为吗?这是jQuery中的错误吗?

4

2 回答 2

9

这是 Netscape 很久以前引入的一个“错误”(愚蠢的举动,IMO),其中form.action是一个属性,因为具有该属性的元素name<form>. 所以不,这不是一个真正的 jQuery 错误,而是一个 JavaScript 错误,这取决于您的观点……jQuery 对这些情况没有任何额外的检查。

为了安全起见,不要命名您的元素"action""submit",因为它也可能会混淆form.submit()

于 2010-11-12T16:34:17.610 回答
2

确实很奇怪。我要悄悄地说-错误...

带有action属性的表单:http: //jsfiddle.net/vMTYY/

action没有属性的表单:http: //jsfiddle.net/ZWWTm/

于 2010-11-12T16:36:50.713 回答