jQuery选择器:Id结束了吗?

时间:2009-03-04 05:56:22

标签: jquery jquery-selectors

是否有selector我可以查询ID以给定字符串结尾的元素?

假设我有一个id为ctl00$ContentBody$txtTitle的元素。如何通过仅传递txtTitle

来获得此结果

9 个答案:

答案 0 :(得分:590)

如果您知道元素类型,那么:(例如:将'element'替换为'div')

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

如果您不知道元素类型:

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

More information available


// 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" />

答案 1 :(得分:240)

问题的答案是$("[id$='txtTitle']")as Mark Hurd answered,但对于那些像我一样想要找到ID为开头的所有元素的人string(例如txtTitle),试试这个(doc):

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

如果您要选择ID 包含给定字符串(doc)的元素:

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

如果您想选择ID 给定字符串(doc)的元素:

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

(它也匹配没有指定属性的元素)

如果您要选择ID 包含给定单词的元素,以空格分隔doc):

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

如果您想选择id 等于给定字符串或以该字符串后跟连字符doc)开头的元素:

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

答案 2 :(得分:32)

尝试

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

编辑:迟到4秒:P

答案 3 :(得分:30)

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

引用与

匹配的文本片段并不是绝对必要的

答案 4 :(得分:13)

将下划线或$添加到您要搜索的字词更安全,因此不太可能匹配以相同ID结尾的其他元素:

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

(其中元素是您要查找的元素类型 - 例如divinput等。

(注意,你建议你的ID往往有$符号,但我认为.NET 2现在倾向于在ID中使用下划线,所以我的例子使用下划线)。

答案 5 :(得分:3)

一个例子: 选择ID以_edit结尾的所有<a>

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

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

答案 6 :(得分:3)

由于这是ASP.NET,您只需使用ASP&lt;%=%&gt;标签打印生成的txtTitle的ClientID:

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

这将导致......

$('ctl00$ContentBody$txtTitle')

...呈现页面时。

注意:在Visual Studio中,Intellisense会因为将ASP标记放入JavaScript而对你大喊大叫。您可以忽略这一点,因为结果是有效的JavaScript。

答案 7 :(得分:1)

试试这个:

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

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

答案 8 :(得分:0)

要在包含许多iframe的网页中找到以“iFrame”结尾的iframe ID。

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

                     }                   
                  });     
         });