JQuery在Select中获取动态生成的Option的值

时间:2013-03-21 20:19:56

标签: javascript jquery dynamic-content

我正在尝试获取用户在动态生成的选择中的动态生成选项上选择的选项的值。现在我只是试图提醒一下,但是已经完全没有用了。

我已经尝试在docuement.ready中使用.change绑定但是没有用,我想这可能是因为它不存在要绑定的元素。 .change的代码

$(document).ready(function () {
    $(".lowerSerialSelect").change(function () {
        alert("red")
    });
});

这是我用来动态生成选择的代码:

if (_interface == "network" && _deviceName == "Not in Use")
    {
        var lowerSerialTd = document.createElement("td");
        lowerSerialTd.className = "lowerSerial";
        trTag.appendChild(lowerSerialTd);
        var lowerSerialSelect = document.createElement("select");
        lowerSerialSelect.className = "lowerSerialSelect";
        lowerSerialSelect.name = "lowerSerial" + identifier;
        lowerSerialSelect.id = _interface + "lowerSerial" + identifier;

        var lowerSerialOption = document.createElement("option");
        lowerSerialSelect.appendChild(lowerSerialOption)

        for (newDevice in newNetworkDevices)
        {
            alert(newNetworkDevices[0]);
            var lowerSerialOption = document.createElement("option");
            lowerSerialOption.innerHTML = newNetworkDevices[newDevice][0];
            lowerSerialOption.className = "networkMacOption";
            lowerSerialOption.id = _interface + "lowerSerial" + identifier;
            lowerSerialOption.value = newNetworkDevices[newDevice];
            lowerSerialSelect.appendChild(lowerSerialOption)
        }

        lowerSerialTd.appendChild(lowerSerialSelect);
        alert("Maybe");
    }

.change还没有绑定到尚未创建的元素吗?

如果可以的话,我可以通过每次创建新选择时重新绑定来解决这个问题吗? (用户将触发新的选择,因此不会立即完成所有操作)

我也尝试了$(“选择”.on(“更改”,“选项”,函数(){警告(“红色”);});但无济于事。任何帮助或解释都将是赞赏。

这是在配置页面上,所以代码很长,800行,所以我不想发布整个事情。

由于

**编辑**

动态生成的html最终看起来像这样:

  <select class="lowerSerialSelect" name="lowerSerial2" id="networklowerSerial2">
        <option></option>
        <option class="networkMacOption" id="networklowerSerial2"    value="0080A39166BA,192.168.1.59,47331,1363895658.22">0080A39166BA</option>
  </select>

1 个答案:

答案 0 :(得分:2)

是的,你是真的,.change()不是委托的人。试试.on()

$('body').on('change', '.lowerSerialSelect', function() {
  // code here
});