【问题标题】:Can I access a control by the last portion of its ID in jQuery?我可以在 jQuery 中通过其 ID 的最后一部分访问控件吗?
【发布时间】:2015-08-16 20:52:13
【问题描述】:

我有一个动态创建的控件,我给出了 ID“ckbxEmp”

正如我在“查看源代码”中发现的那样,Sharepoint(或 Chrome,或“某人”)无礼而自以为是地重新识别(并命名它,并“为”它)这个控件,赋予它威尔士式的“ 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");
    }
}); 

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

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

注意:这是this question的后续。

更新

奇怪的是(这开始变得非常烦人),这也不起作用:

$(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");
    }
}); 

就是这个。这不是别的东西。就是这个。”——猎鹿人

【问题讨论】:

  • 这应该可以,但看起来您在控件 ID 中有一个编码的 GUID,并且您的 GUID 可能正在改变。您可能希望更改为使用类而不是该类型的 ID。
  • 如果我在 WebPart 上只有一个需要监视的复选框,那么类会很好。你的答案只是膨胀/花花公子。

标签: jquery dynamic sharepoint-2010


【解决方案1】:
$(document).on("change", '[id$=ckbxEmp]', function () {

【讨论】:

    【解决方案2】:

    使用 Jquery 选择器

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

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

    获取以“ckbxEmp”结尾的那些

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 2021-05-09
      • 2011-04-10
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      相关资源
      最近更新 更多