Jquery Selector无法在Internet Explorer上运行

时间:2010-03-08 20:44:21

标签: jquery internet-explorer css-selectors

Internet Explorer不喜欢我的Jquery选择器。不确定这是不是我的弱Jquery 技能或一般探索者的陌生感。

以下是代码:

$("#field_"+index+" #field_Label").val();

[div field_1]

<input id="field_Label" //... you get the picture.

解释这个..我有一个标有field_1,field_2等的DIV .. Internet Explorer似乎找到了第一次迭代,但不能 找到第二个。

谢谢大家,感谢stackoverflow。

我应该采取更好的方式吗?..

这是一个更完整的代码段:

<li id="blank">
<div  id="field_1" style="background: #BDCFFF; color: #1028BD;margin: 10px; border: 1px solid black;width: 400px; height: 100px;">
<table>
<tr><td>Label:</td><td><input class="field_Label" id="field_Label" type="text"/></td></tr>
<tr><td>Type:</td><td><input id="field_Type" type="text" value="2"/></td></tr>
<tr><td>Id:</td><td><input id="idField" type="text" value="0"/></td></tr>
</table>

</div>

8 个答案:

答案 0 :(得分:3)

尝试在输入上使用类而不是id。只有一个输入应该有id field_Label。

<input class="field_Label" />
selector: $("#field_"+index+" .field_Label").val();

考虑到您添加的代码段,这是一次更新。我重写了将id改为class。

<div  id="field_1">
<table>
<tr><td>Label:</td><td><input class="field_Label" type="text"/></td></tr>
<tr><td>Type:</td><td><input class="field_Type" type="text" value="2"/></td></tr>
<tr><td>Id:</td><td><input class="idField" type="text" value="0"/></td></tr>
</table>
</div>

Selectors:
var label = $("#field_1 .field_Label").val();
var type = $("#field_1 .field_Type").val();
var id = $("#field_1 .idField").val();

如果您要使用具有相同类型输入的许多表,则使用Class而不是id。否则,如果输入是唯一的,只需使用id,例如:selector:$(“#idField”)。val()

答案 1 :(得分:2)

用逗号分隔每个选择器:

$("#field_" + index + ", #field_Label")...........

答案 2 :(得分:2)

感谢大家的帮助..我终于解决了这个问题......从那以后就很奇怪了 它似乎只会导致Internet Explorer出现问题..但这就是我所做的 让它工作。

$("#field_"+index).find("#field_Label").val();

/ * StackOverflow万岁!! * /

答案 3 :(得分:1)

将#field_Label更改为.field_Label,然后访问

$("#field_"+index+".field_Label").val();

没有值之间的空格,所以输出将是#field_1.field_Label - (即喜欢细节)

答案 4 :(得分:0)

你应该给你的div一个班,然后做

 var inputvals = $('.class_name').val();

那么你可以用它们作为一个整体做你想做的事情而你不必用逗号分隔一堆id

答案 5 :(得分:0)

  

感谢大家的帮助......我做到了   终于解决了..这只是   奇怪,因为它似乎只是导致   Internet Explorer的问题..但是   这就是我为了让它发挥作用而做的。

     

$( “#字段_” +指数).find( “#FIELD_LABEL”)VAL();

     

/ * StackOverflow万岁!! * /

你节省了我很多时间。谢谢!!! IE是魔鬼

答案 6 :(得分:0)

Thanks everyone for the help.. I did finally resolve this.. it was just
     奇怪,因为它似乎只是导致   Internet Explorer的问题..但是   这就是我为了让它发挥作用而做的。

$("#field_"+index).find("#field_Label").val();

/* Long live StackOverflow !! */

正如其他人所说,最里面的.find()不是必需的,而且过于冗余。

基本上,ID是使用jQuery的Sizzle选择器引擎选择的禁用方法。使用唯一ID,选择是最快的方法。从另一个ID下降ID只会增加不必要的额外计算。你很可能不会遇到任何表现减速,但这并不是一个好习惯。

这是您访问该元素应该做的事情:

$("#field_label").val();

来源: http://www.artzstudio.com/2009/04/jquery-performance-rules/

答案 7 :(得分:0)

嗯,除了field_Label应该是一个类而不是我在你的样本中看到的id这个事实;如果你真的需要两个后代id选择器,你可以使用find()。

所以,而不是:

$("#field_" + index + " #field_Label")

您可以使用:

$("#field_" + index).find("#field_Label")

这在IE中运行良好。