1

我正在使用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 事件。根据reportLevel在 a 中选择的值调用事件dropdown

4

3 回答 3

10

尝试以下:

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/

于 2013-08-01T14:55:41.693 回答
3

我认为在其他情况下,您想将值重置为默认值,您必须使用

$("#selected_countries").val('default value')

如果你只是想阻止 onchange 事件的默认操作而不是其他你可以写

e.preventDefault()

这会有所帮助

于 2013-08-01T14:48:09.143 回答
1

您可以使用 off 从元素中分离事件处理程序,如下所示:

$("#selected_countries").off('change');
于 2013-08-01T14:53:01.340 回答