Селектор jQuery: Id заканчивается?

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

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

Ответы

Ответ 1

Если вы знаете тип элемента then: (например: замените '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" />

Ответ 2

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

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

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

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

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

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

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

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

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

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

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

Ответ 3

Try

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

edit: 4 секунды поздно: P

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

или

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

Ответ 7

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

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

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

$('ctl00$ContentBody$txtTitle')

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

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

Ответ 8

Попробуйте следующее:

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

var test = $(this).find('[id*="_h"').val();

Ответ 9

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

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

                     }                   
                  });     
         });