Есть ли selector
, который я могу запросить для элементов с идентификатором, заканчивающимся заданной строкой?
Скажем, у меня есть элемент с идентификатором ctl00$ContentBody$txtTitle
. Как я могу получить это, передав просто txtTitle
?
Есть ли selector
, который я могу запросить для элементов с идентификатором, заканчивающимся заданной строкой?
Скажем, у меня есть элемент с идентификатором ctl00$ContentBody$txtTitle
. Как я могу получить это, передав просто txtTitle
?
Если вам известен тип элемента, то: (например: замените 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" />
document.getElementById("f:fTest:j_idt51:0:inpTest")
. Это не $("[id$='inpTest']")
. Это потому, что двоеточие не разрешено в идентификаторе (но JSF добавляет его!)?
- person Panu Haaramo; 26.04.2014
Ответ на вопрос $("[id$='txtTitle']")
, как ответил Марк Херд, но для тех, кто, как и я, хочет найти все элементы с идентификатором, который начинается с данной строки (например, txtTitle), попробуйте следующее (документ):
$("[id^='txtTitle']")
Если вы хотите выбрать элементы, идентификатор которых содержит заданную строку (doc):
$("[id*='txtTitle']")
Если вы хотите выбрать элементы, идентификатор которых не является заданной строкой (документ):
$("[id!='myValue']")
(он также соответствует элементам, у которых нет указанного атрибута)
Если вы хотите выбрать элементы, id которых содержит заданное слово, разделенное пробелами (документ):
$("[id~='myValue']")
Если вы хотите выбрать элементы, идентификатор которых равен заданной строке или начинается с этой строки, за которой следует дефис (doc):
$("[id|='myValue']")
Пытаться
$("element[id$='txtTitle']");
редактировать: с опозданием на 4 секунды: P
$('element[id$=txtTitle]')
Необязательно цитировать фрагмент текста, с которым вы сопоставляете
Безопаснее добавлять символ подчеркивания или $ к искомому термину, чтобы с меньшей вероятностью совпадали другие элементы с тем же идентификатором:
$("element[id$=_txtTitle]")
(где element - это тип элемента, который вы пытаетесь найти, например div
, input
и т. д.
(Обратите внимание, вы предлагаете, чтобы в ваших идентификаторах были символы $, но я думаю, что .NET 2 теперь имеет тенденцию использовать вместо этого символы подчеркивания, поэтому в моем примере используется подчеркивание).
Пример: чтобы выбрать все <a>
с идентификатором, заканчивающимся на _edit:
jQuery("a[id$=_edit]")
or
jQuery("a[id$='_edit']")
Поскольку это ASP.NET, вы можете просто использовать тег ASP ‹% =%> для печати сгенерированного ClientID txtTitle:
$('<%= txtTitle.ClientID %>')
Это приведет к ...
$('ctl00$ContentBody$txtTitle')
... когда страница отображается.
Примечание. В Visual Studio Intellisense будет кричать на вас за добавление тегов ASP в JavaScript. Вы можете проигнорировать это, так как результатом будет правильный JavaScript.
'ctl00$ContentBody$txtTitle'
, у него есть 'txtTitle'
, и, вам не хватает ведущего #
для соответствия идентификатору. Но OP уже отклонил подобное предложение (с момента его удаления): Это не сработает, если я не помещу свой Javascript прямо в разметку, что является кошмаром организации. Поведенческое разделение имеет решающее значение для этого проекта.
- person Martijn Pieters; 19.10.2012
Попробуй это:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
Чтобы найти идентификатор iframe, заканчивающийся на «iFrame», на странице, содержащей множество окон iframe.
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});
ClientIDMode=static
начиная с ASP.Net 4.0 и избавьтесь от этого :) - person Murali Murugesan   schedule 27.09.2013