introduced destroy method, closes #18
This commit is contained in:
parent
c8b274e9ab
commit
1faea146d4
26
select2.js
26
select2.js
@ -212,7 +212,7 @@
|
|||||||
requestSequence += 1; // increment the sequence
|
requestSequence += 1; // increment the sequence
|
||||||
var requestNumber = requestSequence, // this request's sequence number
|
var requestNumber = requestSequence, // this request's sequence number
|
||||||
data = options.data, // ajax data function
|
data = options.data, // ajax data function
|
||||||
transport=options.transport||$.ajax;
|
transport = options.transport || $.ajax;
|
||||||
|
|
||||||
data = data.call(this, query.term, query.page);
|
data = data.call(this, query.term, query.page);
|
||||||
|
|
||||||
@ -318,6 +318,11 @@
|
|||||||
// prepare options
|
// prepare options
|
||||||
this.opts = this.prepareOpts(opts);
|
this.opts = this.prepareOpts(opts);
|
||||||
|
|
||||||
|
// destroy if called on an existing component
|
||||||
|
if (opts.element.data("select2") !== undefined) {
|
||||||
|
this.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
this.container = this.createContainer();
|
this.container = this.createContainer();
|
||||||
|
|
||||||
if (opts.element.attr("class") !== undefined) {
|
if (opts.element.attr("class") !== undefined) {
|
||||||
@ -325,7 +330,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// swap container for the element
|
// swap container for the element
|
||||||
this.opts.element.data("select2", this)
|
this.opts.element
|
||||||
|
.data("select2", this)
|
||||||
.hide()
|
.hide()
|
||||||
.after(this.container);
|
.after(this.container);
|
||||||
this.container.data("select2", this);
|
this.container.data("select2", this);
|
||||||
@ -382,6 +388,16 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AbstractSelect2.prototype.destroy = function () {
|
||||||
|
var select2 = this.opts.element.data("select2");
|
||||||
|
if (select2 !== undefined) {
|
||||||
|
select2.container.remove();
|
||||||
|
select2.opts.element
|
||||||
|
.removeData("select2")
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
AbstractSelect2.prototype.prepareOpts = function (opts) {
|
AbstractSelect2.prototype.prepareOpts = function (opts) {
|
||||||
var element, select;
|
var element, select;
|
||||||
|
|
||||||
@ -1157,7 +1173,8 @@
|
|||||||
// filter out duplicates
|
// filter out duplicates
|
||||||
$(data).each(function () {
|
$(data).each(function () {
|
||||||
if (indexOf(this.id, ids) < 0) {
|
if (indexOf(this.id, ids) < 0) {
|
||||||
ids.push(this.id); filtered.push(this);
|
ids.push(this.id);
|
||||||
|
filtered.push(this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
data = filtered;
|
data = filtered;
|
||||||
@ -1344,7 +1361,7 @@
|
|||||||
var args = Array.prototype.slice.call(arguments, 0),
|
var args = Array.prototype.slice.call(arguments, 0),
|
||||||
opts,
|
opts,
|
||||||
select2,
|
select2,
|
||||||
value, multiple, allowedMethods = ["val"];
|
value, multiple, allowedMethods = ["val", "destroy"];
|
||||||
|
|
||||||
this.each(function () {
|
this.each(function () {
|
||||||
if (args.length === 0 || typeof(args[0]) === "object") {
|
if (args.length === 0 || typeof(args[0]) === "object") {
|
||||||
@ -1368,6 +1385,7 @@
|
|||||||
|
|
||||||
value = undefined;
|
value = undefined;
|
||||||
select2 = $(this).data("select2");
|
select2 = $(this).data("select2");
|
||||||
|
if (select2 === undefined) return;
|
||||||
value = select2[args[0]].apply(select2, args.slice(1));
|
value = select2[args[0]].apply(select2, args.slice(1));
|
||||||
if (value !== undefined) {return false;}
|
if (value !== undefined) {return false;}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user