[英]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.