Jquery - 选择器不选择多个复选框IE

时间:2010-05-26 08:16:29

标签: jquery

在IE中,多个输入的选择器不起作用,而在Firefox中则是。 下面是html。

   <td><input id="contactInfo.shippingAddress.streetAddress1" name="contactInfo.shippingAddress.streetAddress1" onchange="needToConfirm = true;" type="text" value="address1" maxlength="100"/></td>


<td><input id="contactInfo.shippingAddress.city" name="contactInfo.shippingAddress.city" onchange="needToConfirm = true;" type="text" value="city" maxlength="100"/></td>
   <td ><input id="contactInfo.shippingAddress.state" name="contactInfo.shippingAddress.state" onchange="needToConfirm = true;" type="text" value="state" maxlength="100"/></td>
   <td><input id="contactInfo.shippingAddress.addressZipCode" name="contactInfo.shippingAddress.addressZipCode" onchange="needToConfirm = true;" type="text" value="123456" maxlength="10"/>
   </td>
   <td><select id="contactInfo.shippingAddress.country" name="contactInfo.shippingAddress.country" class="dropDown" onchange="needToConfirm = true;">
   </td>

以下是jquery使用 -

$("*[id^='contactInfo\\.shippingAddress']").val("");

关于问题可能在哪里的任何想法..

2 个答案:

答案 0 :(得分:1)

Ok得到了一个更好的解决方案,基于实际使用输入框,而不是检查:)

$('input[id^="contactInfo.shippingAddress"]').val('')

刚刚在IE8中测试过,它运行正常。

答案 1 :(得分:0)

虽然它是一个有效的字符,我猜想IE不喜欢ID中的句号。您可以更改ID并使用连字符或下划线吗?

编辑:D'哦!现在明白了。选择器必须是[id^='contactInfo.shippingAddress'],没有反斜杠。

在ID选择器中,需要转义句点,因为它表示类选择器。这是一个属性选择器,我们在一个字符串中,所以不存在与类选择器混淆的危险。

您的选择器在FF中工作(并且它在IE8中以标准模式工作),因为jQuery然后使用浏览器自己的CSS选择器引擎,它对不必要的转义没有任何问题。在IE怪癖模式中,然而使用jQuery的选择器引擎Sizzle并且不会忽略它们。 IMO这是一个Sizzle bug。