【问题标题】:JQuery selector issue on IE7 for input tagIE7上输入标签的JQuery选择器问题
【发布时间】:2011-04-25 18:29:40
【问题描述】:

我有几个具有不同 ID 但输入名称和 ID 相同的表单。例如:

<form id="form1>
    <input name="email" id="email" value="test@test.com"/>
     ..... 
</form>
<form id="form2>
    <input name="email" id="email" value="test@test.com"/>
     ..... 
</form>

在我的 Jquery 就绪函数中,我有以下代码。这在 FireFox、Chrome 中运行良好,但在 IE7 中则不行。这是在 FireFox、Chrome 中将电子邮件值显示为“test@test.com”但 IE7 显示为“未定义”的警报功能。有什么建议吗?

  $(document).ready(function() { 
        alert($("#form1 #emailAddress").val());
    });

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    重复的 ID 是无效的,我不会指望任何选择器过滤在当前、过去或未来版本的 jQuery 中工作。这些元素不应该有 id,它们应该按名称选择。

    例如:

    $('#form1 [name=email]')
    $('#form2 [name=email]')

    【讨论】:

    • fiddled jsfiddle.net/62m3y 选择器过滤在 jquery 的过去和当前版本中确实有效,并且很可能会继续有效。虽然这可能不是无需更改设计的最佳做法,但它确实有效。
    • @Patrick: 试试 alert($("#form2>#email").val());这将失败
    【解决方案2】:
    $(document).ready(function() { 
          alert($("#email","#form1").val());
     });
    

    测试这段代码

    【讨论】:

      【解决方案3】:

      看到您的输入名称和 id 都只是“电子邮件”....并且在您的选择器中您有 emailAddress... 这会给您一个未定义的。

      尝试类似的东西

      $(document).ready(function() {          
      alert($("#form1>#email").val());     
      }); 
      

      【讨论】:

        最近更新 更多