是否selector
可以查询 ID 以给定字符串结尾的元素?
假设我有一个 id 的元素ctl00$ContentBody$txtTitle
。我怎样才能通过只是得到这个txtTitle
?
是否selector
可以查询 ID 以给定字符串结尾的元素?
假设我有一个 id 的元素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" />
问题的答案是$("[id$='txtTitle']")
,正如 Mark Hurd 回答的那样,但是对于像我一样想要找到所有 id以给定字符串开头的元素(例如 txtTitle)的人,试试这个(doc):
$("[id^='txtTitle']")
如果要选择 id包含给定字符串 ( doc ) 的元素:
$("[id*='txtTitle']")
如果要选择 id不是给定字符串 ( doc ) 的元素:
$("[id!='myValue']")
(它也匹配没有指定属性的元素)
如果要选择 id 包含给定单词的元素,由空格( doc )分隔:
$("[id~='myValue']")
如果要选择 id等于给定字符串或以该字符串开头后跟连字符( doc ) 的元素:
$("[id|='myValue']")
尝试
$("element[id$='txtTitle']");
编辑:晚了 4 秒:P
$('element[id$=txtTitle]')
引用您要匹配的文本片段并不是绝对必要的
将下划线或 $ 添加到您正在搜索的术语中更安全,因此不太可能匹配以相同 ID 结尾的其他元素:
$("element[id$=_txtTitle]")
(其中element是您要查找的元素类型 - 例如div
,input
等。
(注意,您是在暗示您的 ID 中往往带有 $ 符号,但我认为 .NET 2 现在倾向于在 ID 中使用下划线,因此我的示例使用下划线)。
示例:选择<a>
ID 以 _edit 结尾的所有 s:
jQuery("a[id$=_edit]")
或者
jQuery("a[id$='_edit']")
由于这是 ASP.NET,您可以简单地使用 ASP <%= %> 标签打印生成的 txtTitle 的 ClientID:
$('<%= txtTitle.ClientID %>')
这将导致...
$('ctl00$ContentBody$txtTitle')
...当页面被渲染时。
注意:在 Visual Studio 中,Intellisense 会因为您在 JavaScript 中放置 ASP 标签而大喊大叫。您可以忽略它,因为结果是有效的 JavaScript。
试试这个:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
为了在包含许多 iframe 的页面中找到以“iFrame”结尾的 iframe id。
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});