javascript - 使用名称捕获动态创建的 Select 的 onchange 事件
问题描述
我在动态创建的元素上使用了事件绑定?并使用 jQuery 从 <select> 获取更改的值以到达我现在所在的位置。
我正在动态创建一个 Select 下拉菜单,并希望捕获所选项目。
我的代码是:
$(document).on('click', '#programDetailTablebody button[name="addPDRow"]', function(e) {
e.preventDefault();
var newRows = "";
newRows += "<tr><td class='button'><button type='button' name='addPDRow' class = 'buttonFront'><span class='glyphicon glyphicon-plus'></span></button></td>";
newRows += "<td class='keyvalue'><input class='timeWidth timeClass pdValue' name='timeInput' value='07:00'></input></td>"; //Time
newRows += "<td class='keyvalue'><select class='form-control activityTypeWidth activityTypeClass pdValue' name='activityTypeInput'>" //Activity Type
newRows += "<option value='' disabled selected>Select Activity Type</option>" + activityTypeOptions + "</select>"
newRows += "<td class='keyvalue'><select class='form-control activityWidth activityClass pdValue' name='activityInput'>" //Activity
newRows += "<option value='' disabled selected>Select Activity</option>" + activityOptions + "</select>"
newRows += "<td class='keyvalue'><input class='equipmentClass pdValue' name='equipmentInput'></input></td>";//Equip. Needed
newRows += "<td class='keyvalue'><input class='awardClass pdValue' name='awardInput'></input></td>";//Award
newRows += "<td class='keyvalue'><input class='leadersClass pdValue' name='leadersInput'></input></td>";//Leaders
newRows += "<td class='button'><button type='button' name='removePDRow' class = 'buttonFront'><span class='glyphicon glyphicon-minus'></span></button></td></tr>";
$(newRows).insertAfter($(this).closest('tr'));
});
$("select[name='activityTypeInput']").on( 'change', 'option', function (e) {
e.preventDefault();
alert("Changed");
var activityType = $(this).val();
alert(activityType);
});
这是页面:
当我选择一个选项并且控制台中没有错误时,不会触发警报。
解决方案
正如您提供的链接中接受的答案一样,您可以在现有父元素上使用事件绑定(例如,在这种情况下,您可以使用#programDetailTablebody)。
所以而不是使用
$("select[name='activityTypeInput']").on( 'change', 'option', function (e) { ... }
你一个用
$('#programDetailTablebody').on( 'change', "select[name='activityTypeInput']", function (e) { ... }
推荐阅读
- spring-boot - ConnectionClosedException:使用 apache hhtpclient 4.5.5 的块编码消息正文过早结束
- loops - 如何同时循环并继续运行脚本(自动热键)
- postgresql - 使用 typeorm 进行跨模式连接
- sql - 这个带有别名表的可疑 SQL 更新语法是否正确?
- php - htaccess - 重定向 GET 参数
- chartify - 如何在 Chartify 图中添加网格线?
- google-sheets - 谷歌表,SUMIF 函数给出:“参数必须是一个范围”错误,如果我使用 ADDRESS 函数作为范围的第二个参数
- r - 从数据框中选择值
- laravel - 带有 VueJS 的 JQUERY 数据表
- perl - Per:子程序的变量对其子程序的可见性