Есть ли селектор, который я могу запросить для элементов с идентификатором, который заканчивается заданной строкой?
Скажем, у меня есть элемент с идентификатором "ctl00 $ContentBody $txtTitle". Как я могу получить это, передав только "txtTitle"?
Есть ли селектор, который я могу запросить для элементов с идентификатором, который заканчивается заданной строкой?
Скажем, у меня есть элемент с идентификатором "ctl00 $ContentBody $txtTitle". Как я могу получить это, передав только "txtTitle"?
Если вы знаете тип элемента 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" />
Ответ на вопрос $("[id$='txtTitle']")
, как ответил Марк Херд, но для тех, кто, как и я, хочет найти все элементы с идентификатором, который начинается с данной строки (например, txtTitle), попробуйте это (doc):
$("[id^='txtTitle']")
Если вы хотите выбрать элементы, которые id содержит данную строку (doc):
$("[id*='txtTitle']")
Если вы хотите выбрать элементы, которые id не, заданную строку (doc):
$("[id!='myValue']")
(он также соответствует элементам, которые не имеют указанного атрибута)
Если вы хотите выбрать элементы, которые id содержит заданное слово, разделенные пробелами (doc):
$("[id~='myValue']")
Если вы хотите выбрать элементы, которые id равны заданной строке или начинаются с этой строки, а затем дефис (doc):
$("[id|='myValue']")
Try
$("element[id$='txtTitle']");
edit: 4 секунды поздно: P
$('element[id$=txtTitle]')
Не обязательно указывать фрагмент текста, который вы сопоставляете с
Безопаснее добавить знак подчеркивания или $к термину, который вы ищете, чтобы он с меньшей вероятностью соответствовал другим элементам, которые заканчиваются одним и тем же идентификатором:
$("element[id$=_txtTitle]")
(где элемент - это тип элемента, который вы пытаетесь найти - например, div
, input
и т.д.
(Обратите внимание, что вы указываете, что ваши идентификаторы имеют в них значки $, но я думаю, что .NET 2 теперь имеет тенденцию использовать символы подчеркивания в идентификаторе, поэтому мой пример использует подчеркивание).
Пример:
для выбора всего <a>
с идентификатором, заканчивающимся на _edit:
jQuery("a[id$=_edit]")
или
jQuery("a[id$='_edit']")
Поскольку это ASP.NET, вы можете просто использовать тег ASP <% =% > для печати сгенерированного идентификатора клиента txtTitle:
$('<%= txtTitle.ClientID %>')
Это приведет к...
$('ctl00$ContentBody$txtTitle')
... когда страница отображается.
Примечание. В Visual Studio Intellisense будет кричать на вас для размещения тегов ASP в JavaScript. Вы можете игнорировать это, поскольку в результате действительный JavaScript.
Попробуйте следующее:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
Чтобы найти iframe-идентификатор, заканчивающийся "iFrame" на странице, содержащей много фреймов.
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});