我可以通过 jQuery 中 ID 的最后一部分访问控件吗?

Can I access a control by the last portion of its ID in jQuery?

我有一个动态创建的控件,我给了它 ID "ckbxEmp"

正如我发现的 "Viewing Source," Sharepoint(或 Chrome,或 "somebody")无礼和冒昧地重新识别(并命名它,然后 "for"s 它)这个控件,赋予它威尔士风格 "ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp"

所以(我想这就是原因),所有通过 jQuery 操纵 "ckbxEmp" 的尝试都失败了——也就是说,当我寻找我给它的短 ID 时,比如所以:

$(document).on("change", '#ckbxEmp', function () {
    console.log('Function has been reached');
    if ($(this).is(":checked")) { 
        alert("Checked");
    } else {
        alert("Not checked");
    }
}); 

所以我可以将该代码更改为:

$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
    console.log('Function has been reached');
    if ($(this).is(":checked")) { 
        alert("Checked");
    } else {
        alert("Not checked");
    }
}); 

...作为一次性的事情还可以,但我有许多动态创建的控件需要操作,我假设它们都会被威尔士化,这会有点痛。

-或者,希望有一种方法可以查找不精确但 "ends with" 的 ID 匹配。那可能吗?如果是这样,它的语法是什么?

注意: 这是 .

的后续

更新

奇怪的是(这开始变得很烦人),这也不管用:

$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
    console.log('Function has been reached');
    if ($(this).is(":checked")) {
        alert("Checked");
    } else {
        alert("Not checked");
    }
}); 

更新 2

Robert McKee 的回答,加上后续问题中的回答,已经形成了一个可行的解决方案,编码:

$(document).on("change", '[id$=ckbxEmp]', function () {
    alert('Function has been reached');
    if ($(this).is(":checked")) {
        alert("Checked");
    } else {
        alert("Not checked");
    }
}); 

"就是这个。这不是别的东西。就是这个。" - 猎鹿人

$(document).on("change", '[id$=ckbxEmp]', function () {

使用Jquery选择器

要获取所有以 "ckbxEmp" 开头的元素,您应该使用:

$(document).on("change", "[id^='ckbxEmp']", function () {

获取以"ckbxEmp"

结尾的那些
$(document).on("change", "[id$='ckbxEmp']", function () {