繁体   English   中英

Jquery Selector无法在Internet Explorer上运行

[英]Jquery Selector not working on Internet Explorer

Internet Explorer不喜欢我的Jquery选择器。 不确定这是我的弱Jquery技能还是一般的Explorer奇怪。

这是代码:

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

[div field_1]

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

解释一下..我有一个DIV标记为field_1,field_2 ..等等。互联网资源管理器似乎找到了第一次迭代,但找不到第二次。

谢谢大家,感谢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>

尝试在输入而不是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();

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

用逗号分隔每个选择器:

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

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

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

/ * StackOverflow万岁!! * /

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

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

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

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

所以,而不是:

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

你可以用这个:

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

这在IE中运行良好。

你应该给你的div一个班级做

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

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

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

$( “#领域_” +指数).find( “#FIELD_LABEL”)VAL()。

/ * StackOverflow万岁!! * /

你救了我几个小时的时间。 谢谢!!! IE是魔鬼

 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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM