2013-03-21 127 views
0

我试图获取用户在动态生成的选择中动态生成的选项上选择的选项的值。现在我只是试图提醒一下,但是已经彻底失败了。JQuery获取选择的动态生成的选项的值

我试过使用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不绑定到尚未创建的元素呢?

如果可以,我每次创建一个新选择时都可以通过重新绑定来解决此问题? (用户将触发新的选择,所以它不会一次完成)

我也试过了$(“select”.on(“change”,“option”,function(){alert (“red”);});但无济于事,任何帮助或解释,将不胜感激

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

感谢

**编辑**

是动态生成HTML d看起来这到底:

<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> 
+0

因此,对于任何人遇到同样的问题,我的问题是使用jQuery的过时的版本,并使用jQuery的工具过时的版本的组合。 – Poodimizer 2013-03-22 15:21:40

回答

2

呀你点上,.change()不是委派弯。尝试.on()

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

嗯,我只是试着精确的代码,只是在它的警报,它没有触发,我绝对有一个身体标记。当我明白这一点时,我可能会做所有的面部表情。 – Poodimizer 2013-03-21 20:32:15

+0

哦,我是个白痴好的,非常感谢你们100%正确。原来我们只是使用过时的JQuery版本。现在我知道将版本代码保留在插件文件名中。 – Poodimizer 2013-03-21 20:45:48

+0

其实还是不行。不过,我现在可以在创建新选择时绑定.change。只是希望我知道为什么另一个不工作,因为它是更高效的代码。 – Poodimizer 2013-03-21 21:31:05