0

我正在创建一行元素,在我的 ROW 中有一个选择框/下拉菜单。我想要的是我想在每一行的每个下拉菜单上调用onChange函数。

count = 1;
jQuery('select[id="warehouse-' + count + '"]').change(function() {
    alert('hello');
    var urlWareHouse = "<?php echo $this->url('stock', array('action' => 'populateLocationInWarehouse', 'controller' => 'Stock')) ?>";
    url = urlWareHouse + '/' + jQuery('id="warehouse-' + count + '"]').val();
    SelectBoxNullValue = "Select Location";
    populateSelectBox(url, 'warehouse-'+count, 'location');
    count++;
});

的 populateSelectBox函数只是一个将数据填充到新创建的 Select Element 的 ajax 调用。我不知道我做错了什么。问题是我无法在使用我的方法新创建的时触发onChange

4

2 回答 2

3

使用on()函数绑定到元素,甚至是新元素,否则您必须不断地重新绑定元素。

jQuery(document).on("change",'select[id="warehouse-' + count + '"]',function() {
    alert('hello');
    var urlWareHouse = "<?php echo $this->url('stock', array('action' => 'populateLocationInWarehouse', 'controller' => 'Stock')) ?>";
    url = urlWareHouse + '/' + jQuery('id="warehouse-' + count + '"]').val();
    SelectBoxNullValue = "Select Location";
    populateSelectBox(url, 'warehouse-'+count, 'location');
    count++;
});
于 2013-07-17T19:21:19.090 回答
2

使用.on()代替 .change()。

.change只绑定一次。如果添加了元素,则需要重新绑定。.on自动执行此操作。

此外,由于您有一个 ID,因此您无需将“select”指定为选择器的一部分。

jQuery('#warehouse-' + count)会做。

于 2013-07-17T19:20:48.913 回答