Currently our dev team uses this pattern, but I can't help but wonder if there is a faster or more html-efficient way of accomplishing the same task. HTML Solution 1:
This is a function I wrote to do just that. I'm not sure if it's faster than jQuery Templates. It creates and appends the Option elements one at a time, which may be slower than Templates. I suspect that Templates builds the whole HTML string, and then creates the DOM elements all in one shot. That may be a faster. I suppose this function could be adjusted to do the same thing. I've worked with Templates, and I do find that this function is easier to consume for something a simple as populating a Select list, and it fits nicely into my utility.js file.Update: I updated my function to build the HTML first, and call append() only once. It actually runs much faster now. Thanks for posting this question, it's nice to be able to optimize one's own code.Consuming the function// you can easily pass in response.d from an AJAX call if it's JSON formatted
var users = [ {id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Cindy'} ]
setSelectOptions($('#selectList'), users, 'id', 'name');
CopyThe function code// Fill a select list with options using an array of values as the data source// @param {String, Object} selectElement Reference to the select list to be modified, either the selector string, or the jQuery object itself// @param {Object} values An array of option values to use to fill the select list. May be an array of strings, or an array of hashes (associative arrays).// @param {String} [valueKey] If values is an array of hashes, this is the hashkey to the value parameter for the option element// @param {String} [textKey] If values is an array of hashes, this is the hashkey to the text parameter for the option element// @param {String} [defaultValue] The default value to select in the select list// @remark This function will remove any existing items in the select list// @remark If the values attribute is an array, then the options will use the array values for both the text and value.// @return {Boolean} falsefunctionsetSelectOptions(selectElement, values, valueKey, textKey, defaultValue) {
if (typeof (selectElement) == "string") {
selectElement = $(selectElement);
}
selectElement.empty();
if (typeof (values) == 'object') {
if (values.length) {
var type = typeof (values[0]);
var html = "";
if (type == 'object') {
// values is array of hashesvar optionElement = null;
$.each(values, function () {
html += '<option value="' + this[valueKey] + '">' + this[textKey] + '</option>';
});
} else {
// array of strings
$.each(values, function () {
var value = this.toString();
html += '<option value="' + value + '">' + value + '</option>';
});
}
selectElement.append(html);
}
// select the defaultValue is one was passed inif (typeof defaultValue != 'undefined') {
selectElement.children('option[value="' + defaultValue + '"]').attr('selected', 'selected');
}
}
returnfalse;
}
Copy
Share
Post a Comment
for "Best Way To Populate Select List With Jquery / Json?"
Top Question
How To Validate Form Fields And Post The Form Data To Server Using Jquery And Ajax?
I am trying to validate form fields like, Name (must not be…
Replace Url From Youtube To Embed Code - Error: Permission Denied To Access Property 'toString'
I have this code and this error in FireBug: Error: Permiss…
How To Add Date Time Value To Input By Onclick Checked JQuery
i have this Solution 1: jsFiddle Demo var months = n…
External API GET() Request Using JQuery
I am using the IMDb API v2.0 located here and I decided to …
JQuery - Renaming Checkboxes Sets Consecutively
I'm trying to build a form to allow multiple elements (…
Dropdown Menu On Refresh Changes Javascript
I have implemented a navbar uisng bootstrap 4,in which I ha…
How Do I Use Data From Vue.js Child Component Within Parent Component?
I have a form component where I use a child component. I wa…
Uncaught TypeError: $(...).tooltipster Is Not A Function
I can't use the tooltipster library along with tablesor…
Add Two Conditions In Filter Javascript
Im trying to add two conditions in filter but only one work…
Cannot Invoke Ashx Inside The Function
I am having jquery code to invoke ashx file. Its perfectly …
December 2024
(1)
November 2024
(35)
October 2024
(68)
September 2024
(25)
August 2024
(371)
July 2024
(334)
June 2024
(705)
May 2024
(1290)
April 2024
(788)
March 2024
(1543)
February 2024
(1653)
January 2024
(1323)
December 2023
(1379)
November 2023
(392)
October 2023
(493)
September 2023
(299)
August 2023
(352)
July 2023
(269)
June 2023
(351)
May 2023
(209)
April 2023
(127)
March 2023
(150)
February 2023
(182)
January 2023
(282)
December 2022
(132)
November 2022
(230)
October 2022
(172)
September 2022
(170)
August 2022
(496)
July 2022
(303)
June 2022
(266)
Menu Halaman Statis
Beranda
© 2022 - JavaScript OfficialSite