【问题标题】:Alternative to .change in jquery?jquery 中 .change 的替代方案?
【发布时间】:2013-01-29 11:23:13
【问题描述】:

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

<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,但我认为它也会提前触发。

【问题讨论】:

  • 您是如何获取 select 事件中的值的? $(this).val(); 应该正确反映触发事件的新值。 working example.

标签: javascript jquery


【解决方案1】:

我认为 .change() 是你想要的,但你在滥用它。 change 事件在值更改后触发。在您的处理程序中,您需要读取新值:

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

您可能还想在&lt;option&gt; 标签上设置值:

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

【讨论】:

  • 您不需要设置值;如果没有设置值,它将使用文本。
  • @Barmar TIL!很高兴知道。
【解决方案2】:

在获取当前选择值时,您一定是做错了什么。以下对我来说是正确的。

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());
});

【讨论】:

    【解决方案3】:

    一个警告,.change 现在已经失效了,你应该使用...

    .on('change', function()
    

    这样。

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2016-08-17
      • 2014-08-25
      • 2010-10-03
      相关资源
      最近更新 更多