Вопрос по jquery-selectors, jquery – Как выбрать скрытое поле по значению?

31

У меня есть следующий 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>

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

если вы не получаете его по идентификатору, тогда кто-то может прийти, добавить вход на вашу страницу, и если они оба имеют одинаковое значение, вы можете получить ошибку; делать это по id кажется намного безопаснее jcollum
@ Flesh - я ценю дополнительную сложность вложенных элементов управления в ASP.NET, однако вы все равно можете получить их идентификаторы клиентов (просто не сразу понятно, как это сделать). Посмотрите на событие ItemDataBound, e.Item.FindControl и ClientID. Это будет делать именно то, что вам нужно, без необходимости прибегать к взлому, что, как указал jcollum, может привести к ошибке. RichardOD
да, я понимаю, что я не хакер, мне нужно сделать это на стороне клиента, потому что я сохраняю изменения с помощью веб-метода, а не обратной передачи (обратная передача сохраняет другие элементы на странице) и должна отражать это в пользовательском интерфейсе для удобства пользователей , спасибо за предложение, хотя flesh
@Richard - внутри повторителя ASP.NET каждое скрытое поле получит другой идентификатор (как и должно быть), например, ctl100_ItemId, ctl101_ItemId и т. д. Обычно мы нацеливаем эти идентификаторы с помощью $ ('id $ = ItemId') (заканчивается на), но здесь это не будет работать хорошо. Kobi
Почему бы вам не облегчить себе жизнь и не получить поле по ID? RichardOD

Ваш Ответ

3   ответа
8
$('input:hidden[value=\'3\']');
83

С помощьюСелекторы 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.

Просто хотел упомянуть, но могут быть проблемы совместимости между браузерами при использовании кавычек вокруг запрашиваемого вами значения. $ ('input [value = Независимо от]') кажется приемлемым способом выполнения запросов такого рода.
Технически, если вы хотите соответствоватьvalue attribute, тогда этот ответ по-прежнему правильный. Конечно, поскольку jQuery любит разделывать спецификацию селекторов для собственных нужд, селекторы атрибутов не всегда работают таким образом. В 1.9+ они теперь работают в соответствии со спецификацией, то есть это будетonly сопоставьте этоvalue атрибут, объявленный в разметке, иnot от.value DOM недвижимость.
Как указывает Глин Джонс, это не работает с jQuery 1.9+. Смотрите его ответ ниже для альтернативы.
11

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

Например.

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

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

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

Похожие вопросы