簡體   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