我正在使用select2。
用法:如果值为"COUNTRY"
,我想向select2添加onchange事件,否则我想删除onchange事件,如下所示:
var reportLevel = getReportLevel();
if (reportLevel != "COUNTRY") {
$("#selected_countries").on("change", function(e) {
prepareGlidModel(e);
});
} else {
$("#selected_countries").on("change", function(e) {
});
}
问题:即使调用了else块,也无法删除onchange事件。
根据{{1}}中选择的reportLevel
值调用事件。
答案 0 :(得分:9)
尝试以下:
var reportLevel = getReportLevel(),
// by default unbind/off change event
$select = $("#selected_countries").off("change");
// and if country then bind it
if (reportLevel == "COUNTRY") {
$select.on("change", function(e) {
alert("you selected :" + $(this).val());
});
}
这里的工作示例:http://jsfiddle.net/JB89B/1/
答案 1 :(得分:3)
我认为在其他情况下你想要将值重置为默认值,你必须使用
$("#selected_countries").val('default value')
如果您只想阻止onchange事件的默认操作而不是其他,则可以编写
e.preventDefault()
这将有助于
答案 2 :(得分:1)
您可以使用off从元素中分离事件处理程序,如下所示:
$("#selected_countries").off('change');