jQuery中的.change的替代方法是什么?

3

我正在尝试触发一个ajax事件,并在ajax调用中将选择列表选项的值作为参数传递。不幸的是,我正在.change事件上触发调用,它会在新选项被选中之前传递选择选项的值(即传递先前选择的选项的值)。是否有一个事件可以获取当前选定选项的值?非常感谢提前。

<select id='theList'>
   <option> Option 1</option>
   <option> Option 2</option>
</select>

在JS中:

$('#theList').change( function() {
$.getJSON('Home/MethodName', { var1: Option1Value, var2: MiscValue}, function(data) {
      //Execute instructions here
}
)});

我想使用.trigger,但我认为它也会在之前触发。


你是如何在选择事件中获取值的? $(this).val(); 应该正确反映触发事件的新值。工作示例 - jbabey
3个回答

4

我认为.change()是您想要的,但是您使用不当。更改事件发生在值更改之后。在您的处理程序中,您需要读取新值:

$('#theList').change( function() {
  var value = $('#theList').val();
  $.getJSON('Home/MethodName', { your_key: value }, function(data) {
      // ...
  }
)});

您可能还希望在<option>标签上设置值:

<option value="something"> Option 2</option>

1
不需要设定数值;如果没有设置数值,它将使用文本。 - Barmar
@Barmar TIL!好知道。 - kevingessner

0
一个警告,.change现在已经过时了,你应该使用...
.on('change', function()

就像这样。


0

当获取当前选择的值时,您可能做错了一些事情。以下代码对我来说是正确的。

http://jsfiddle.net/TJ2eS/

<select id="demo">
    <option value=""></option>
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c">C</option>
</select>

$("#demo").change(function() {
    alert("current select value " + $(this).val());
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接