$("#myForm").attr("action")为没有动作的表单返回表单元素而不是undefined

Kea*_*her 3 html javascript jquery attr

我有这个基本的例子:

<!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>
Run Code Online (Sandbox Code Playgroud)

当您点击"点击我"时,您可以看到标记

$("#myForm").attr("action"); 
Run Code Online (Sandbox Code Playgroud)

实际上并不返回元素的属性.它返回名称为"action"的表单的子项.

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

Nic*_*ver 9

这是Netscape很久以前引入的一个"bug"(一个愚蠢的行为,IMO),这form.action是一个属性,因为有一个元素name是一个孩子的<form>.所以不,它不是一个jQuery错误,而是一个JavaScript,根据你的观点... jQuery只是没有任何额外的检查这些情况.

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