有没有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直接放在标记中,否则这是行不通的,这是组织的噩梦。行为分离对于这个项目至关重要。