我的客户群是高度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。
答案 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;
}
}