3

在正文中考虑以下 HTML5 代码:

<p id="p1">
    Email: <input type="text" name="email" /><br />
    Name: <input type="text" name="name" /><br />
    <input type="submit" name="submit" value="Submit" />
</p>
<p id="p2">
    <form action="/index.php">
        Email: <input type="text" name="email" /><br />
        Name: <input type="text" name="name" /><br />
        <input type="submit" name="submit" value="Submit" />
    </form>
</p>

以及以下 javascript 代码:

$(document).ready(function() {
    alert("$(#p1 input).length: " + $("#p1 input").length + "\n$(#p2 input).length: " + $("#p2 input").length);
});​

以下是不同浏览器的输出:

互联网浏览器 9.0.8112.16421

$(#p1 input).length: 3
$(#p2 input).length: 3

铬版本 20.0.1132.47 Ubuntu 12.04 (144678)

$(#p1 input).length: 3
$(#p2 input).length: 0

适用于 Ubuntu 17.0.1 的 Mozilla Firefox

$(#p1 input).length: 3
$(#p2 input).length: 0

谁能解释一下为什么?

http://jsfiddle.net/LKStL/2/

4

1 回答 1

1

详细说明我的评论:

form不允许在元素内部使用类似的块p元素。它是无效的 HTML,因此 jQuery 在尝试解析它时会中断。我只能推测它可能在 Internet Explorer 中工作,因为 Explorer 不遵循 HTML 呈现标准(即:它应该会中断但不会)。

解决方案:将您的form标签放在 之外p或更改p为允许块元素的元素,例如div.

于 2012-12-05T13:47:05.923 回答