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