有没有一种可以查询以给定字符串结尾的 ID 元素的 选择器
?
比如我有一个 ID 为 ctl00$ContentBody$txtTitle
的元素。通过传递 txtTitle
,我该如何获取它呢?
有没有一种可以查询以给定字符串结尾的 ID 元素的 选择器
?
比如我有一个 ID 为 ctl00$ContentBody$txtTitle
的元素。通过传递 txtTitle
,我该如何获取它呢?
如果您知道元素类型,则可以进行以下操作:(例如:将“元素”替换为“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']")
。是因为冒号在ID中不被允许(但JSF添加了它!)吗? - Panu Haaramo这个问题的答案是$("[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>
元素:jQuery("a[id$=_edit]")
或者
jQuery("a[id$='_edit']")
由于这是ASP.NET,您可以简单地使用ASP <%= %>标记打印txtTitle的生成ClientID:
$('<%= txtTitle.ClientID %>')
$('ctl00$ContentBody$txtTitle')
...在页面呈现时。
注意:在Visual Studio中,智能提示会警告您不要在JavaScript中使用ASP标签。您可以忽略此警告,因为结果是有效的JavaScript代码。
'ctl00$ContentBody$txtTitle'
,他有'txtTitle'
,而且你缺少前导的#
以匹配一个ID。但是OP已经拒绝了一个类似的建议(已删除):除非我将我的Javascript直接放在标记中,否则这不起作用,这是一个组织上的噩梦。 行为分离对于这个项目至关重要。 - Martijn Pieters试试这个:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});
ClientIDMode=static
并摆脱这个问题 :) - Murali Murugesan