Селектор Jquery не работает в Internet Explorer - PullRequest
2 голосов
/ 08 марта 2010

Internet Explorer не нравится мой селектор Jquery. Не уверен, что это мой слабый Jquery навыки или общие странности исследователя.

Вот код:

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

[div field_1]

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

, чтобы объяснить это .. У меня есть DIV, помеченный field_1, field_2 .. и т.д .. 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 ]

3 голосов
/ 08 марта 2010

Попробуйте использовать класс на входе вместо идентификатора. Только один вход должен иметь идентификатор field_Label.

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

Это обновление, учитывая фрагмент кода, который вы добавили. Я переписал его, меняя идентификатор на класс.

<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 ()

2 голосов
/ 09 марта 2010

Спасибо всем за помощь .. Я наконец решил это .. это было просто странно, так как это только казалось, что вызывает проблемы с Internet Explorer .. но это то, что я сделал с заставить его работать.

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

/ * Да здравствует StackOverflow !! * /

2 голосов
/ 08 марта 2010

Разделяйте каждый селектор запятой:

$("#field_" + index + ", #field_Label")...........
1 голос
/ 09 марта 2010

Измените #field_Label на .field_Label и затем получите доступ к

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

Без пробела между значениями, поэтому на выходе получится # field_1.field_Label - (т.е. любит подробности)

0 голосов
/ 01 июня 2012

Ну, кроме того факта, что field_Label должен быть классом, а не идентификатором в том, что я вижу в вашем образце; если вам действительно нужно иметь два селектора идентификаторов потомков, вы можете использовать find ().

Итак, вместо:

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

Вы можете использовать это:

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

Это нормально работает в IE.

0 голосов
/ 20 октября 2010
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 () не нужен и чрезмерно избыточен.

По сути, идентификаторы - это быстрый способ выбора с помощью механизма выбора Sizzle в jQuery. Используя уникальный идентификатор, выбор - самый быстрый метод. Снижение идентификатора с другого идентификатора только добавляет ненужные дополнительные вычисления. Скорее всего, вы не будете испытывать никакого снижения производительности, но это плохая привычка.

Вот что вам нужно сделать, чтобы получить доступ к этому элементу:

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

Источник: http://www.artzstudio.com/2009/04/jquery-performance-rules/

0 голосов
/ 23 августа 2010

Спасибо всем за помощь .. Я сделал наконец решить это .. это было просто странно, потому что это только казалось причиной проблема с Internet Explorer .. но это то, что я сделал, чтобы заставить его работать.

$ ( "# поле _" + индекс) .find ( "# FIELD_LABEL") Вал ();.

/ * Да здравствует StackOverflow !! * /

Вы спасли меня ЧАСЫ времени. Спасибо!!! IE это дьявол

0 голосов
/ 08 марта 2010

вы должны дать вашему диву класс и сделать

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

тогда вы можете делать с ними все, что хотите, и вам не нужно разделять запятые множеством идентификаторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...