我有一个填充了静态数据的表,一列包含在forEach
(数组中的项目)期间为每一行构建的下拉列表。虽然它们具有相同的内容,但它们需要单独处理。用户将更改下拉列表,并且需要存储他们的选择。
我见过jquery .change
方法,根据文档可以像
$(document).ready(function(){
$( "input[type='select']" ).change(function() {
console.log (input( $( this ).val() )
});
});
当任何下拉列表发生变化时触发。但上面没有记录,也没有错误。
如何监控所有这些下拉列表以进行更改并存储更改?
OR
根据select
设置脚本以监控其指定的元素,我会更好吗?我现在或可能不关心性能或文件大小。我已经使用forEach
填充行和selected
下拉列表的右option
答案 0 :(得分:2)
问题是您使用的是select
,不是 input[type="select"]
。那是不正确的。
<table id="yourTableID">
<tr>
<td>
<select>
<option value="blahXX">Some Text</option>
....
....
</select>
</td>
</tr>
</table>
input[type="XXX"]
将是:
您需要的是jQuery的on
事件,如下所述。 b / w没有on
事件和使用change
事件的区别在于您声明选择是“克隆”的,这意味着change
事件将不会被设置这些新的克隆选择。
此外,无论您使用的是on
还是其他活动(例如change
,click
等),使用以下代码始终是一个好习惯。这样做是说:“查看此元素(通常是ID),当事件发生时,将其应用于函数中的元素”。而不是说(不使用这种方式),“取所有这些XXX元素,并为每个元素添加一个事件监听器。为什么有XXXX事件监听器只需要一个!
$(function() { <-- this is the same as using (document).ready
$('#yourTableID').on('change','select', function(e) {
// your stuff here
});
});
基本上你只创建了一个事件监听器,而不是XX。这只会将监听器添加到带有XX ID的表中,并说“使用XX ID在此元素中观察selects
,如果发生change
事件,则触发事件”。
.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集。从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有功能。有关从旧的jQuery事件方法转换的帮助,请参阅.bind(),. delegate()和.live()。要删除与.on()绑定的事件,请参阅.off()。要附加仅运行一次然后自行删除的事件,请参阅.one()
答案 1 :(得分:0)
它不是$("input[type='select']")
,只是$("select")
。 select
是非输入类型的标记。