jquery select2 .on(“更改”,函数(e)重置选项

时间:2013-08-01 14:45:52

标签: javascript jquery jquery-select2

我正在使用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值调用事件。

3 个答案:

答案 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');