我有一个表,其第二列是一个下拉列表。我想抓住下拉菜单的价值。我现在遇到的问题是,如果用户选择第二行的下拉列表的值,我仍然会收到第一行的下拉列表的值。
这是我的代码:
$('#orders').on('change', function () {
console.log("value is " + $('.dropdown_select').closest("tr").find("option:selected").val());
});
我的表是“ #orders”,下拉选择类名称是“ dropdown_select”。
任何人都可以告诉我我在做什么错。
答案 0 :(得分:1)
我建议您将change事件绑定到selects,而不是表本身。这应该为您工作:
$('.dropdown_select').on('change', function () {
console.log("value is " + $(this).find("option:selected").val());
// In fact, it would be even better if you get the val with " $(this).val()" as suggested by sideroxylon
});
请记住下次提供HTML!
答案 1 :(得分:1)
您可以尝试以下方法:
$('#orders').on('change', '.dropdown_select' , function () {
console.log("value is " + $(this).find(":selected").val());
});
这种方式的最大好处是,如果以后(动态)向表中添加新行,这仍然可以正常工作。
您可以try this online或对其进行更改并查看结果。
为什么您的代码无法正常工作?
因为$(".dropdown_select").closest(...)
返回所有.dropdown_select
元素,并且当您在其上调用.closest(..)
时,jQuery
总是返回最接近第一项。