2

<select id="direction_X"></select>我的 php 脚本生成了多个。X 是它的 ID。我正在尝试通过这样做来选择这些元素:

$('select[id*="direction_"]').live('change', function() {
     selected = $('select[id*="direction_"] option:selected');
     option_ID = $(selected).val();

     console.log(option_ID);
}

事实上,当我使用时,我得到了 option_ID,但如果我尝试使用任何其他的,我总是得到相同的 option_ID。

如果你先点击,它会给你(一个空字符串),当你点击之后,它会给你从第一个开始的正确 ID

4

2 回答 2

6

您应该使用this引用当前选择元素的关键字。

$('select[id^="direction_"]').on('change', function() {
     var selected = $(this).val(); // this.value
     console.log(selected);
})

注意livemethod已经废弃,可以使用onmethod,如果select元素是php生成的,就不需要使用事件委托,万一页面加载后生成元素,使用onmethod委托事件的正确方式是:

$(document).on('change', 'select[id^="direction_"]', function() {

属性以选择器开头 |

于 2012-12-22T02:01:38.737 回答
0

好吧,如果您想获取所有选定的值,那么您必须遍历所有选择元素并构建所有选定选项的数组。

鉴于此 HTML -

<select id="sel_1">
    <option value="1" selected="selected">1</option>
    ...
</select>
<select id="sel_2">
    <option value="2" selected="selected">2</option>
    ...
</select>
<select id="sel_3">
    ...
    <option value="3" selected="selected">3</option>
</select>

你会做这样的事情来收集所有选定的元素 -

var selValues = $("select[id*='sel'] option:selected").map(function(){
  return $(this).val();
});
console.log(selValues); // ["1", "2", "3"] 

这是一个快速演示(打开你的控制台)

于 2012-12-22T02:10:12.690 回答