javascript - 如何获取动态创建的选择框的值

标签 javascript jquery html css ajax

我正在使用 ajax 动态创建一个 div。现在,如果 ajax 调用成功,那么我为 div 元素创建了一个字符串并将其附加到原始 div id。 这是我的代码

 $.ajax({
    type:"GET",
    url:"resources/json/asnData.json",
    dataType:"json",
    success:function(data){
        $.each(data.Payload, function(index, val){
            i=i+1;
            stmt+='<div class="row">'+
                    '<section class="col col-2">'+
                        '<label class="input"><i class="icon-append fa fa-key"></i>'+
                            '<input type="text" name="keyName" value="'+val.key+'" readonly/>'+
                        '</label>'+
                    '</section>'+
                    '<section class="col col-3">'+
                        '<label class="select">'+
                            '<select id="dataConversionType'+i+'" class="dataConversionType">'+
                                '<option value="HEX">HEX</option>'+
                                '<option value="ALL">Compare All</option>'+
                                '<option value="ASCII">ASCII</option>'+
                                '<option value="STRING">STRING</option>'+
                                '<option value="INT">INTEGER</option>'+
                                '<option value="BINT">BIG INTEGER</option>'+
                            '</select><i></i>'+
                        '</label>'+
                    '</section>'+
                    '<section class="col col-5">'+
                        '<label class="input"><i class="icon-append fa fa-dashcube "></i>'+
                            '<input id="convertedType'+i+'" type="text" value="'+val.value+'" readonly/>'+
                        '</label>'+
                    '</section>'+
         '</div>';
        });
        $(".dataParser").append(stmt);

现在有一个功能,如果有人在选择框中选择一个值然后触发并显示。

 $('#dataConversionType'+i).change(function(e) {
            e.preventDefault();
            var conversionType=$(this).val(); //I have doubt here also..
            console.log(conversionType);
            if(conversionType == 'ALL') {
                console.log('ALL-Show a modal with each possible conversion');
            }

但这行不通。如果我使用类名调用,则此函数有效。但是我必须使用带有 i 值的 id 来调用该函数,以便使用该 i 值我还可以在其他字段中设置一些值。 任何帮助将不胜感激......

最佳答案

使用 class 而不是 id(用一些非动态容器替换文档)

 $(document).on('change','.dataConversionType',function(e) {
                e.preventDefault();
                var conversionType=$(this).val(); 
                console.log(conversionType);
                var index_val = $(this).attr('data-index')
                if(conversionType == 'ALL') {
                    console.log('ALL-Show a modal with each possible conversion');
                }
    )};

当你生成你的元素时添加一个数据属性

'<select id="dataConversionType'+i+'" class="dataConversionType" data-index="'+i+'">'

另外,如果你在一个循环中,如果你想获得正确的值而不是最新的值,你需要将你的 ajax 包装在一个闭包中。

(function(idx) {
  //ajax stuff here
}(i)

关于javascript - 如何获取动态创建的选择框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537506/

相关文章:

javascript - Tablesorter 解析器忽略 div 元素

html - Facebook 登录按钮注销文本

javascript - html/javascript 链接到本地​​文件

javascript - 如何通过样式获取元素 : position left or right

javascript - SQL 模式与 NoSQL 命名空间

javascript - 如何在 plotly.js 的同一个图中绘制两个图

javascript - 尝试用 JavaScript 编写计算器

javascript - IE9 上的 JQUERY 水平菜单

jquery - 如何使用 jquery 设置两个 div 的百分比宽度动画

javascript - 使用两个或多个 $(document).ready.. 会影响性能吗?