有没有selector
我可以用一个给定的字符串两端查询元素与ID?
假设我有一个ID为的元素ctl00$ContentBody$txtTitle
。我怎样才能通过只得到txtTitle
?
ClientIDMode=static
从ASP.Net 4.0开始设置并摆脱此:)
有没有selector
我可以用一个给定的字符串两端查询元素与ID?
假设我有一个ID为的元素ctl00$ContentBody$txtTitle
。我怎样才能通过只得到txtTitle
?
ClientIDMode=static
从ASP.Net 4.0开始设置并摆脱此:)
Answers:
如果您知道元素类型,则:(例如:将“ element”替换为“ div”)
$("element[id$='txtTitle']")
如果您不知道元素类型:
$("[id$='txtTitle']")
document.getElementById("f:fTest:j_idt51:0:inpTest")
。这不是$("[id$='inpTest']")
。是因为ID中不允许使用冒号(但JSF添加了冒号!)?
正如马克·赫德(Mark Hurd)回答的那样,问题的答案是$("[id$='txtTitle']")
,但是对于那些像我一样想要查找以给定字符串开头的id为所有元素(例如txtTitle)的元素,请尝试以下方法(doc):
$("[id^='txtTitle']")
如果要选择id 包含给定字符串(doc)的元素:
$("[id*='txtTitle']")
如果要选择id 不是给定字符串(doc)的元素:
$("[id!='myValue']")
(它也匹配没有指定属性的元素)
如果要选择id 包含给定单词的元素,并用空格(doc)分隔:
$("[id~='myValue']")
如果要选择id 等于给定字符串或以该字符串开头且后跟连字符(doc)的元素:
$("[id|='myValue']")
由于这是ASP.NET,因此您可以简单地使用ASP <%=%>标记来打印生成的txtTitle ClientID:
$('<%= txtTitle.ClientID %>')
这将导致...
$('ctl00$ContentBody$txtTitle')
...呈现页面时。
注意:在Visual Studio中,Intellisense会大喊您将ASP标记放入JavaScript。您可以忽略它,因为结果是有效的JavaScript。
'ctl00$ContentBody$txtTitle'
,他有'txtTitle'
,而您缺少#
匹配ID 的领导。但是OP已经拒绝了类似的建议(自删除以来):除非我将Javascript直接放在标记中,否则这是行不通的,这是组织的噩梦。行为分离对于这个项目至关重要。