0

我正在使用 JavaScript 即时生成一些 HTML 表格。填写完这个动态表后,我使用 jQuery 来“抓取”一些输入并为表单验证做一些小的计算。但是,我的 jQuery 选择器不适用于动态 HTML 表单。谁能给我一些建议?谢谢!

这是代码:

<script>
//generate HTML table
$('<tr><th><label for="id_CAM_1">Input:</label></th><td><select name="CAM_1_'+i+'" id="id_1_'+i+'"><option value="1">Option 1</option><option value="2">Option 2</option></select></td></tr>').appendTo('.table');

// jQuery selector, which does not work dynamically

$('select[name=CAM_1_'+i+']').change(function() {
            var ss1=$(this).val()
            alert(ss1)})
</script>
4

4 回答 4

1
<script type="text/javascript">
    $(function() {
        $('<tr><th><label for="id_CAM_1">Input:</label></th><td><select name="CAM_1_'+i+'" id="id_1_'+i+'"><option value="1">Option 1</option><option value="2">Option 2</option></select></td></tr>')
            .appendTo('.table')
            .on('change', function() {
                alert(this.value);
        });
    });
</script>​​​​​​​​​​​​​​​
于 2012-08-28T16:42:57.030 回答
1

以下将检测名称以您的开头的所有元素select的所有更改CAM_1_tableSelector

$('tableSelector').on('change', 'select[name^="CAM_1_"]', function() {
    alert(this.value);
});
于 2012-08-28T16:43:58.270 回答
1

我想复制你的问题,但对我来说它工作得很好。我确实必须添加右括号 ( })),因为您发布的内容似乎缺少这些。您是否在控制台中收到任何错误。检查您是否在 JavaScript 控制台中遇到任何错误,以及您是否使用的是最新版本的 jQuery。

<table class="table"></table>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
<script>
i = 0;
//generate HTML table
$('<tr><th><label for="id_CAM_1">Input:</label></th><td><select name="CAM_1_'+i+'" id="id_1_'+i+'"><option value="1">Option 1</option><option value="2">Option 2</option></select></td></tr>').appendTo('.table');

// jQuery selector, which does not work dynamically

$('select[name=CAM_1_'+i+']').change(function() {
    var ss1=$(this).val()
    alert(ss1)
});
</script>
于 2012-08-28T16:48:58.337 回答
0
<script>
//generate HTML table
$('<tr><th><label for="id_CAM_1">Input:</label></th><td><select name="CAM_1_'+i+'"   id="id_1_'+i+'"><option value="1">Option 1</option><option value="2">Option 2</option></select></td></tr>').appendTo('.table');

// jQuery selector, which does not work dynamically

$('select[name=CAM_1_'+i+']').live("change",function() {
        var ss1=$(this).val()
        alert(ss1)})
</script>

所以基本上你需要使用jquery的live方法来动态生成html。

于 2012-08-28T16:57:39.267 回答