【问题标题】:jQuery form input count different in IEIE中的jQuery表单输入计数不同
【发布时间】:2011-05-11 18:15:18
【问题描述】:

我在 jQuery 中计算表单元素时遇到了一个奇怪的问题。虽然我可以解决它,但我想知道是否有人知道为什么以下示例的浏览器之间存在差异?

<!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>IE Test</title>
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <meta name="author" content="" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            alert($('form :input').length);
        });
    </script>
</head>
<body>      
    <div id='wrapper'>
        <div id='header'>
            <form action='#' method='POST'>
                <input type='text' name='title' value='Hotdog Fanatic'></input>
            </form>
        </div>
    </div>

</body>

IE 6/7/8 给我的结果都是 2,而 FF、chrome、opera 和 safari 都算 1 个匹配元素。

如果我将选择器更改为按任何属性进行过滤,则计数显示正确。例如,form :input[name]form :input[type] 作为选择器在 IE 中只返回一个匹配的元素。

有人知道为什么会这样吗?

谢谢!

巴普斯。

【问题讨论】:

    标签: jquery internet-explorer forms jquery-selectors


    【解决方案1】:

    删除 &lt;/input&gt; 结束标记。
    相反,您应该制作一个自闭合标签:

    <input type='text' name='title' value='Hotdog Fanatic' />
    

    将脚本更改为

    <script type="text/javascript">
        $(document).ready(function(){
            alert($('form :input')[1].outerHTML);
        });
    </script>
    

    这将提醒&lt;/INPUT&gt;

    【讨论】:

    • 是的。关闭输入标签在 W3C 中无效。
    【解决方案2】:

    输入元素不是容器,当你使用 XHTML strict 时,将其替换为:

    <input type='text' name='title' value='Hotdog Fanatic' />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多