在javascript中选择部分ID名称
我有一个asp.net Web表单,其中包含以下脚本(在单独的.js文件中): 不幸的是,它无法工作,因为asp.NET3.5更改了元素id。我能让它工作的唯一方法是使用在javascript中选择部分ID名称,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我有一个asp.net Web表单,其中包含以下脚本(在单独的.js文件中): 不幸的是,它无法工作,因为asp.NET3.5更改了元素id。我能让它工作的唯一方法是使用ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa作为ID 当然,我可以从asp.net端使用,它可以工作,但我必须将其作为var传递到我的外部.js文件,而这并不是我想要实现的 我已经搜索了一些方法来部分地根据元素的ID名称来选择元素,但是没有任何一种方法可以工作。
ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa
作为ID
当然,我可以从asp.net端使用
,它可以工作,但我必须将其作为var传递到我的外部.js文件,而这并不是我想要实现的
我已经搜索了一些方法来部分地根据元素的ID名称来选择元素,但是没有任何一种方法可以工作。。。有保证的方法吗?我可以在您的问题上看到JQuery标记,因此您可以轻松使用:
$('div[id*="mpeEmpresa"]')
据我所知,contentplaceholder
呈现为div
更新:
如果您也需要选择empresaFilha
,则无法使用上述选择器。
因为
$('div[id*=“mpeEmpresa”]”)
选择ctl00\u contentplaceholder 1\u empresaFilha
和ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa
。
所以你需要使用这个:
$('div[id*="mpeEmpresa"]')
仅选择mpeEmpresa
:
$('div[id*="mpeEmpresa"]').css("background-color","blue");
仅选择empresaFilha
:
$('div[id*="mpeEmpresa"]').parent('div[id*="empresaFilha"]').css("background-color","red");
或者类似的事情,可能这段代码没有优化,因为我看不到您的ASP代码或呈现的HTML,所以必须提供一个通用的解决方案。您可以简单地使用它
var mpe=$('div[id$="mpeEmpresa"]');
或
我的一个老答案可能在这里有所帮助
*=
在选择器中意味着“包含”向元素添加ClientIDMode=“Static”
,以保留原始id。$find('[id$=“mpeEmpresa”]')以选择器结尾可以帮助您,正如@NawedKhan所说的,如果您在单独的js文件中使用选择器,css类选择器应该是最好的方法,我避免使用类选择器解决方案,因为我觉得它不是很优雅。不幸的是,出于某种奇怪的原因,这两种方法都不适用于我,也不适用于$find('[id$=“mpeEmpresa”]')
。捕获\uuu
可能更可靠$('div[id*=“\u mpeEmpresa”]”)实际上,mpeEmpresa是一个ModalPopupExtender
。您的解决方案将只应用于模态的背景,因此不会隐藏模态的面板本身。。。除非我也将隐藏应用于“pnlEmpresa”(mpe适用的面板)。不知道为什么。您可以通过在浏览器的源代码中搜索mpeEmpresa
轻松找到它,不是吗?但是关于隐藏,这不是soulution的问题,可能你的模态是这样呈现的:当你使用JS隐藏内部元素时,外部容器仍然存在。实际上,我在渲染模态窗口的源代码中找不到它。此外,我只能在执行hide()
的行中使用$('div[id*=“mpeEmpresa”])
(和/或$('div[id*=“pnlEmpresa”])
)。尝试在VAR(每个函数的第一行)上使用它们中的任何一个都不起作用。请尝试此$find($('div[id*=“mpeEmpresa”]”)。attr('id'))
,并告诉我结果。
var mpe=$find('div[id$="mpeEmpresa"]');