在javascript中选择部分ID名称

时间:2014-08-19 20:37:20

标签: javascript jquery asp.net

我有一个asp.net webform,其中包含以下脚本(在单独的.js文件中):

function pageLoad() {
    var mpe = $find("mpeEmpresa");
    mpe.add_shown(onShown);
    $addHandler(document, "keydown", onKeyDown);
}
function onShown() {
    var background = $find("mpeEmpresa")._backgroundElement;
    background.onclick = function() {
    $find("mpeEmpresa").hide();
    }
}

不幸的是,它不起作用,因为asp.net 3.5更改了元素id。我能让它发挥作用的唯一方法是使用ctl00_ContentPlaceHolder1_empresaFilha_mpeEmpresa作为ID。

当然我可以使用asp.net端的<%= mpeEmpresa.ClientID %>,它可以工作,但是我必须将它作为var传递给我的外部.js文件,这并不是我想要完成的

我已经搜索了几种方法来部分地通过它的ID名称选择元素,但是无法使它们中的任何一个工作......是否有保证的方式?

2 个答案:

答案 0 :(得分:0)

我可以在你的问题上看到JQuery标签,所以你可以轻松地使用它:

$('div[id*="mpeEmpresa"]')

据我所知,ContentPlaceHolders呈现为div

<强>更新

如果您还需要选择empresaFilha,则无法使用上述选择器。
因为$('div[id*="mpeEmpresa"]')会同时选择ctl00_ContentPlaceHolder1_empresaFilhactl00_ContentPlaceHolder1_empresaFilha_mpeEmpresa
所以你需要使用它:

仅选择mpeEmpresa

$('div[id*="mpeEmpresa"]').css("background-color","blue");

仅选择empresaFilha

$('div[id*="mpeEmpresa"]').parent('div[id*="empresaFilha"]').css("background-color","red");

或类似的东西,也许这段代码没有如此优化,因为我没有看到你的ASP代码或渲染的HTML,所以必须提供一般的解决方案。

答案 1 :(得分:0)

你可以简单地使用这个

var mpe=$('div[id$="mpeEmpresa"]');

 var mpe=$find('div[id$="mpeEmpresa"]');