Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
172
rated 0 times [  174] [ 2]  / answers: 1 / hits: 15884  / 11 Years ago, sun, december 1, 2013, 12:00:00

I have a drop down menu whose select options I would like to change on a click event. The current select options should be removed and replaced with a new array of options.
Here's the fiddle:



And here's another attempt at fixing it that doesn't work:



 $(document).ready(function () {
var dropdown = $('<select>');
dropdown.options = function (data) {
var self = this;
if (data.length > 0) {
//how to remove the current elements
}
$.each(data, function (ix, val) {
var option = $('<option>').text(val);
data.push(option);
});
self.append(data)
}
dropdown.clear = function () {
this.options([]);
}
var array = ['one', 'two', 'three'];
dropdown.options(array);
$('body').append(dropdown);
$('#btnSubmit').on('click', function (ix, val) {
//should clear out the current options
//and replace with the new array
var newArray = ['four', 'five', 'six'];
dropdown.clear();
dropdown.options(newArray);
});
});

More From » jquery

 Answers
15

All you have to do is change append() to html() since html() replaces existing content of element



 dropdown.options = function (data) {
var self = this;
$.each(data, function (ix, val) {
var option = $('<option>').text(val).val(val);/* added val() also*/
data.push(option);
});
self.html(data)
}


DEMO


[#73959] Friday, November 29, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
davion

Total Points: 458
Total Questions: 109
Total Answers: 100

Location: Taiwan
Member since Mon, Sep 6, 2021
3 Years ago
;