Как выбрать скрытое поле по значению?

У меня есть следующий HTML-код, созданный повторителем ASP.NET:

<table>
  <tr>
    <td><input type="hidden" name="ItemId" id="ItemId" value="3" /></td>
    <td>Terry</td>
    <td>Deleted</td>
    <td>Low</td>
    <td>Jun 21</td> 
  </tr>
  <!-- rows repeat -->
</table>

Как выбрать конкретное скрытое поле по значению, чтобы я мог затем манипулировать столбцами рядом с ним?

 RichardOD01 июл. 2009 г., 09:55
@ Flesh - я ценю дополнительную сложность вложенных элементов управления в ASP.NET, однако вы все равно можете получить их идентификаторы клиентов (просто не сразу понятно, как это сделать). Посмотрите на событие ItemDataBound, e.Item.FindControl и ClientID. Это будет делать именно то, что вам нужно, без необходимости прибегать к взлому, что, как указал jcollum, может привести к ошибке.
 jcollum30 июн. 2009 г., 22:58
если вы не получаете его по идентификатору, тогда кто-то может прийти, добавить вход на вашу страницу, и если они оба имеют одинаковое значение, вы можете получить ошибку; делать это по id кажется намного безопаснее
 Kobi01 июл. 2009 г., 07:17
@Richard - внутри повторителя ASP.NET каждое скрытое поле получит другой идентификатор (как и должно быть), например, ctl100_ItemId, ctl101_ItemId и т. д. Обычно мы нацеливаем эти идентификаторы с помощью $ ('id $ = ItemId') (заканчивается на), но здесь это не будет работать хорошо.
 RichardOD30 июн. 2009 г., 22:55
Почему бы вам не облегчить себе жизнь и не получить поле по ID?
 flesh01 июл. 2009 г., 21:54
да, я понимаю, что я не хакер, мне нужно сделать это на стороне клиента, потому что я сохраняю изменения с помощью веб-метода, а не обратной передачи (обратная передача сохраняет другие элементы на странице) и должна отражать это в пользовательском интерфейсе для удобства пользователей , спасибо за предложение, хотя

Ответы на вопрос(3)

Решение Вопроса

С помощьюСелекторы jQueryВы можете настроить таргетинг на свой элемент по определенному атрибуту, соответствующему желаемому значению:

$('input[value="Whatever"]');

This way you are targeting an input element, by the attribute value that is equal to the desired value.

EDIT 5/14/2013: Согласно ответу ниже, это больше не работает с jQuery 1.9.

 20 авг. 2010 г., 20:05
Просто хотел упомянуть, но могут быть проблемы совместимости между браузерами при использовании кавычек вокруг запрашиваемого вами значения. $ ('input [value = Независимо от]') кажется приемлемым способом выполнения запросов такого рода.
 08 мая 2013 г., 17:35
Как указывает Глин Джонс, это не работает с jQuery 1.9+. Смотрите его ответ ниже для альтернативы.
 06 сент. 2013 г., 18:59
Технически, если вы хотите соответствоватьvalue attribute, тогда этот ответ по-прежнему правильный. Конечно, поскольку jQuery любит разделывать спецификацию селекторов для собственных нужд, селекторы атрибутов не всегда работают таким образом. В 1.9+ они теперь работают в соответствии со спецификацией, то есть это будетonly сопоставьте этоvalue атрибут, объявленный в разметке, иnot от.value DOM недвижимость.
$('input:hidden[value=\'3\']');

banana & quot;] больше недействителен, так как & quot; ввода технически не является атрибутом. Вам нужно использовать (гораздо труднее читать) .filter

Например.

$("input").filter(function () {
    return this.value === "banana";
});

Смотрите также:jQuery 1.9.1 селектор свойств

 06 сент. 2013 г., 18:52
Если вы используете jQuery 1.9+, это правильный ответ.
 06 сент. 2013 г., 19:01
Нет, это все еще действительный селектор. Это просто правильно соответствует в соответствии сvalue attribute в отличие от.value property сейчас.

Ваш ответ на вопрос