Селектор jQuery: Id заканчивается? - PullRequest
365 голосов
/ 04 марта 2009

Можно ли запросить selector для элементов с идентификатором, который заканчивается данной строкой?

Скажем, у меня есть элемент с идентификатором ctl00$ContentBody$txtTitle. Как я могу получить это, передав только txtTitle?

Ответы [ 9 ]

593 голосов
/ 04 марта 2009

Если вы знаете тип элемента, то: (например: заменить 'element' на 'div')

$("element[id$='txtTitle']")

Если вы не знаете тип элемента:

$("[id$='txtTitle']")

Более подробная информация доступна


// the old way, needs exact ID: document.getElementById("hi").value = "kk";
$(function() {
  $("[id$='txtTitle']").val("zz");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ctl_blabla_txtTitle" type="text" />
240 голосов
/ 03 мая 2011

Ответ на вопрос: $("[id$='txtTitle']"), , как ответил Марк Херд , но для тех, кто, как и я, хочет найти все элементы с идентификатором, который начинается с заданную строку (например, txtTitle), попробуйте это ( doc ):

$("[id^='txtTitle']")

Если вы хотите выбрать элементы, идентификатор которых содержит заданную строку ( doc ):

$("[id*='txtTitle']")

Если вы хотите выбрать элементы, идентификатор которых не равен данной строке ( doc ):

$("[id!='myValue']")

(также соответствует элементам, которые не имеют указанного атрибута)

Если вы хотите выбрать элементы, идентификатор которых содержит данное слово, разделенное пробелами ( doc ):

$("[id~='myValue']")

Если вы хотите выбрать элементы с идентификатором , равным данной строке или начинающимся с этой строки, за которым следует дефис ( doc ):

$("[id|='myValue']")
32 голосов
/ 04 марта 2009

Попробуйте

$("element[id$='txtTitle']");

редактировать: на 4 секунды позже: P

30 голосов
/ 20 марта 2009
$('element[id$=txtTitle]')

Не обязательно указывать фрагмент текста, с которым вы сопоставляете

13 голосов
/ 14 мая 2009

Безопаснее добавить символ подчеркивания или $ к искомому термину, чтобы было меньше шансов сопоставить другие элементы, заканчивающиеся тем же идентификатором:

$("element[id$=_txtTitle]")

(где element - это тип элемента, который вы пытаетесь найти - например, div, input и т. Д.

(Обратите внимание, вы предполагаете, что в ваших идентификаторах, как правило, есть знаки $, но я думаю, что .NET 2 теперь вместо этого использует подчеркивание в идентификаторе, поэтому в моем примере используется подчеркивание).

3 голосов
/ 19 октября 2012

Поскольку это ASP.NET, вы можете просто использовать тег ASP <% =%> для печати сгенерированного ClientID txtTitle:

$('<%= txtTitle.ClientID %>')

Это приведет к ...

$('ctl00$ContentBody$txtTitle')

... когда страница отображается.

Примечание. В Visual Studio Intellisense будет кричать на вас за размещение тегов ASP в JavaScript. Вы можете игнорировать это, так как в результате действительный JavaScript.

3 голосов
/ 22 июля 2010

Пример: выбрать все <a> с идентификатором, заканчивающимся на _edit:

jQuery("a[id$=_edit]")

или

jQuery("a[id$='_edit']")
1 голос
/ 09 мая 2012

Попробуйте это:

<asp:HiddenField ID="0858674_h" Value="0" runat="server" />

var test = $(this).find('[id*="_h"').val();
0 голосов
/ 07 декабря 2011

Чтобы найти идентификатор iframe, заканчивающийся на «iFrame», на странице, содержащей много элементов iframe.

jQuery(document).ready(function (){     
                  jQuery("iframe").each(function(){                     
                    if( jQuery(this).attr('id').match(/_iFrame/) ) {
                            alert(jQuery(this).attr('id'));

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