2

我想检测从选择元素中取消选择选项的事件。例如,如果我的 HTML 是:

<select id="select_box">
    <option value="1">Hot</option>
    <option value="2">Cold</option>
    <option value="3">Just Right</option>
</select>

并且第二个选项被value="2"选中value="3"(我的目标是在功能发生时触发它。

我尝试了以下方法:

$("#select_box option:selected").change(function() {
    console.log($(this).val());
});

但它没有用。

4

5 回答 5

3

change事件应该在select元素本身上进行:

$("#select_box").change(function() {
    console.log($(this).val());
});

当 select 的值发生更改时会触发此事件,并将匹配您需要的行为。


我想要被取消选择的选项的值。

在这种情况下,您需要在选择之前存储先前的值,如下所示:

$("#select_box").change(function() {
    var $select = $(this),
        currentValue = $select.val(),
        oldValue = $select.data('previous-value');

    // do stuff...

    $select.data('previous-value', currentValue);
});
于 2013-10-10T07:47:22.437 回答
1

好吧,这就是我将如何使用更改事件侦听器来处理这个问题。

$("#select_box").on('change', function(e){
    var $t = $(this), data = $t.data('last') || {optText:'none', val:'none'};
    $t.next().text('last was ['+data.optText+'] and its value is "'+data.val+'"').end()
      .data('last', {optText:$t.children('[value="'+$t.val()+'"]').text(), val:$t.val()});
});

小提琴在这里

于 2013-10-10T08:42:41.563 回答
0

您可以手动执行一些操作,例如我给出的以下代码,

var xSelectedOption = 0;

$("#select_box").change(function() {

    if(xSelectedOption != $(this).val())
    {
      xSelectedOption = $(this).val();

      console.log("Option was changed!");
    }  

});
于 2013-10-10T07:55:47.620 回答
0

one()当使用事件绑定方法选择选项时,我将启用该元素

于 2013-10-10T07:47:06.797 回答
0

仅当您需要更改值时才会触发更改事件

        $("#select_box").change(function() {
            console.log(this.value);
        });
于 2013-10-10T07:50:17.190 回答