我有提交按钮,用于打印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示例:
答案 0 :(得分:3)
您还需要取消绑定嵌入的#sub点击处理程序。
$('#reset').on('click',function(){
$('#sub').off('click');
$('#smth').off('change');
});