IE7中jQuery选择器中的特殊字符

时间:2012-01-27 20:38:20

标签: jquery internet-explorer internet-explorer-7 css-selectors

我的客户群是高度IE8和7,所以请耐心等待。

我在页面上有表示层次结构的对象 - 想想订单/行项目类型结构。页面上的对象是

<input type="text" name="Orders[0].LineItems[1]_lineItemTotal" />

我遇到一个问题,在IE7中,此选择器不起作用:

var total = $('[name="Orders[0].LineItems[1]_lineItemTotal"]').val();

跟踪此情况,似乎如果我们逃避这段时间,我们可以做到这一点:

var total = $('[name="Orders[0]\\.LineItems[1]_lineItemTotal"]').val();

令我担心的是,它似乎并不是导致问题的时期,因为这样做很好:

var orderId = $('[name="Orders[0].OrderId"]');

任何人都知道发生了什么,或者最好的方法来解决这个问题?我对HTML元素的命名方案进行了大量投入,而且只有在针对IE7进行QA测试时才会发现这一点 - Chrome,IE9,IE8等似乎处理得很好。

我正在使用jQuery 1.7.1。

2 个答案:

答案 0 :(得分:2)

为了让事情变得更奇怪,它看起来像是Orders [0]的名字。1 _ lineItemTotal工作得很好,但是一旦你在那段时间之后放了任何非特殊字符,它就会停止工作! / p>

我认为反斜杠是目前最好的方法。

jQuery Documentation提供了有关CSS选择器中转义字符的一些信息,但它不应该在您设置属性的地方应用。

答案 1 :(得分:0)

这可能不是最推荐的解决方案,只是一个建议,如果您真的感到沮丧,您无法分配更易于访问的名称,并且肯定无法找到如何使该名称属性起作用=)

var total = 0;
$('input[type=text]').each(function() {
  if ($(this).attr('name') == 'Orders[0].LineItems[1]_lineItemTotal') {
    total = $(this).val();
    return false;
  }
}