从select中重置/取消绑定更改事件

时间:2013-09-01 23:32:49

标签: javascript jquery

我有提交按钮,用于打印select的当前值。为了在选择任何选项之前阻止打印值,我添加了on.change事件以确保至少选择了一个选项。

问题是select的内容不是静态的。它可以被替换。这就是为什么我想在打印任何新值之前重复这个过程(取消绑定旧的更改事件,添加新的事件)。如果我不这样做,可能会打印一些不再可用的旧值。

我试过:

$('#smth').off('change');

但它不起作用。即使我删除了该事件,也可以按下按钮。

代码:

HTML:

<input type="submit" value="reset" id="reset" />
<input type="submit" value="change val" id="chv"/>
<br/><br/>
<select id="smth">
    <option selected="1" disabled="1">Choose</option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
</select>

JS:

$('#smth').on('change',function() {

    $('#sub').on('click', function() {

        $('#container').text($('#smth').val());

    });

});

$('#chv').one('click', function() {

    $('#smth').html('<option selected="1" disabled="1">Choose</option><option>test</option>');

});

$('#reset').on('click',function(){
    $('#smth').off('change');
});

FIDDLE示例:

http://jsfiddle.net/JgxFA/1/

1 个答案:

答案 0 :(得分:3)

您还需要取消绑定嵌入的#sub点击处理程序。

$('#reset').on('click',function(){
    $('#sub').off('click');
    $('#smth').off('change');
});