jQuery使用动态创建的ID

时间:2016-11-24 12:49:37

标签: javascript jquery

我正在尝试在javascript函数中使用动态创建的ID,但它无法正常工作。我认为将#添加到字符串ID之前应该有效,但事实并非如此。

代码:

var IterateCheckedDatesAndUncheckWithSameValue = function (elementNumber) {

  idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber.toString();
  if ($("'#" + idCheckBoxToCompare + "'").prop('checked') === false) {
    return;
  }

  textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber.toString();
  textBoxValue = $("'#" + textBoxID + "'").val();

  for (i = 1; i < 8; i++) {

    if (i !== elementNumber) {
      idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i.toString();
      idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i.toString();
      inputBoxValue = $("'#" + idInputBox + "'").val();

      if ($("'#" + idCheckBox + "'").prop('checked') === true) {
        if (inputBoxValue === textBoxValue) {

          $("'#" + idCheckBox + "'").prop('checked', false);
        }
      }
    }
  }
}

我尝试构建相同的ID,因为:

'#testid'

所以用法是:

$('#testid')

但它没有用。如何正确使用动态创建的ID?

3 个答案:

答案 0 :(得分:1)

使用此,

 var IterateCheckedDatesAndUncheckWithSameValue = function (elementNumber) {

    idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber.toString();
    if ($("#" + idCheckBoxToCompare).prop('checked') === false) {
        return;
    }

    textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber.toString();
    textBoxValue = $("#" + textBoxID).val();

    for (i = 1; i < 8; i++) {

        if (i !== elementNumber) {
            idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i.toString();
            idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i.toString();
            inputBoxValue = $("#" + idInputBox).val();

            if ($("#" + idCheckBox).prop('checked') === true) {
                if (inputBoxValue === textBoxValue) {

                    $("#" + idCheckBox).prop('checked', false);
                }
            }
        }
    }
}

答案 1 :(得分:1)

您的代码看起来很复杂,"'太多了。此外,Javascript可以通过使用+来连接字符串和数字。无需先将其转换为字符串。因此,我更新了它以使其更具可读性。

试试这个

var IterateCheckedDatesAndUncheckWithSameValue = function(elementNumber) {

    idCheckBoxToCompare = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + elementNumber;
    if ($('#' + idCheckBoxToCompare).prop('checked') === false) {
        return;
    }

    textBoxID = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + elementNumber;
    textBoxValue = $('#' + textBoxID).val();

    for (i = 1; i < 8; i++) {

        if (i !== elementNumber) {
            idCheckBox = "CMP_KD1_tcDE_tctpDNDR_chkDNDRDay" + i;
            idInputBox = "CMP_KD1_tcDE_tctpDNDR_txtDNDRDay" + i;
            inputBoxValue = $('#' + idInputBox).val();

            if ($('#' + idCheckBox).prop('checked') === true) {
                if (inputBoxValue === textBoxValue) {
                    $('#' + idCheckBox).prop('checked', false);
                }
            }
            console.log('#' + idCheckBox); //print here just to see the id results
        }
    }
}
html中的

ID每页只能有一个元素。因此,请确保您使用此方法生成的ID与其他方法不匹配。

  

Jquery选择器可以读取String变量。

所以你可以做var id = "#test"。然后就像这样$(id)

或者

var id = "test";然后$("#"+test)

答案 2 :(得分:-2)

我使用Jquery面临同样的问题。尝试$(document).getElementbyId('myid')。希望有所帮助。

编辑 变化: $(“#”+ idCheckBoxToCompare)by $(document).getElementbyId(idCheckBoxToCompare)