I’m using jquery and trying to tune my select menu builder to run much quicker.
I was using each and append, however I’ve since switched to a standard for loop and currently trying to convert my options from using append to concatenated string appended to my select option using .html(). I seem to be at a loss trying to convert my var option object back to an html string. Could someone please tell me what I might be doing wrong.
$.selectMenuBuilder = function(json) {
var myselect = $("#myselect");
var list = "<option value=\"\">> Select Account Number</option>";
var l= json.funding.length;
for(var i=0;i<l; i++) {
var funding = json.funding[i];
var option = $("<option value=\"" + funding.id + "\">" + funding.accountNumber + "</option>")
if(someLogic) {
option.attr("selected", "selected");
}
//Having trouble here converting option object back to html.
list += option.html();
}
list += "<option value=\"addnew\">+ New Account Number</option>";
myselect .html(list);
}
You can totally do away with using jQuery for creating the
optionelements (unless theres some other untold reason you’re using it).i.e. Instead of
You can do:
Secondly,
$(option).html()will return theinnerHTMLof the option element, not including the option tag name. For doing this in a cross-browser fashion, you can wrap the option in an outer element and use itsinnerHTMLinstead.i.e.
$(option).wrap('<select/>').parent().html()will give you what you want.