remove opciones new multiselect drop down borrar añadir jquery user-interface drop-down-menu

new - ¿Cómo agrego opciones a un DropDownList usando jQuery?



new option jquery (11)

Como dice la pregunta, ¿cómo agrego una nueva opción a un DropDownList usando jQuery?

Gracias



Con el plugin: jQuery Selection Box . Puedes hacerlo:

var myOptions = { "Value 1" : "Text 1", "Value 2" : "Text 2", "Value 3" : "Text 3" } $("#myselect2").addOption(myOptions, false);


Necesitaba agregar tantas opciones a los menús desplegables como archivos desplegables en mi página. Así que lo usé de esta manera:

function myAppender(obj, value, text){ obj.append($(''<option></option>'').val(value).html(text)); } $(document).ready(function() { var counter = 0; var builder = 0; // Get the number of dropdowns $(''[id*="ddlPosition_"]'').each(function() { counter++; }); // Add the options for each dropdown $(''[id*="ddlPosition_"]'').each(function() { var myId = this.id.split(''_'')[1]; // Add each option in a loop for the specific dropdown we are on for (var i=0; i<counter; i++) { myAppender($(''[id*="ddlPosition_''+myId+''"]''), i, i+1); } $(''[id*="ddlPosition_''+myId+''"]'').val(builder); builder++; }); });

Esto configuró dinámicamente los menús desplegables con valores como 1 a n, y seleccionó automáticamente el valor para el orden en que se encontraba el menú desplegable (es decir, el segundo menú desplegable tiene "2" en el cuadro, etc.).

Era ridículo que no pudiera usar this o this this.Object o $.obj o algo así en mi 2nd .each() , aunque --- en realidad tuve que obtener la ID específica de ese objeto y luego agarrar y pasar esa Objeto completo a mi función antes de que se agregue. Afortunadamente, la identificación de mi menú desplegable estaba separada por una "_" y podía agarrarla. No creo que debiera haberlo hecho, pero de lo contrario me seguía dando excepciones a jQuery. Algo que otros luchando con lo que yo era podrían disfrutar sabiendo.


Sin complementos, esto puede ser más fácil sin usar tanto jQuery, en lugar de ir un poco más a la vieja escuela:

var myOptions = { val1 : ''text1'', val2 : ''text2'' }; $.each(myOptions, function(val, text) { $(''#mySelect'').append( new Option(text,val) ); });

Si desea especificar si la opción a) es o no el valor seleccionado predeterminado, y b) debería seleccionarse ahora, puede pasar dos parámetros más:

var defaultSelected = false; var nowSelected = true; $(''#mySelect'').append( new Option(text,val,defaultSelected,nowSelected) );


Sin usar ningún plugin extra,

var myOptions = { val1 : ''text1'', val2 : ''text2'' }; var mySelect = $(''#mySelect''); $.each(myOptions, function(val, text) { mySelect.append( $(''<option></option>'').val(val).html(text) ); });

Si tenía muchas opciones, o este código tenía que ejecutarse con mucha frecuencia, debería utilizar un DocumentFragment lugar de modificar el DOM muchas veces innecesariamente. Para solo unas pocas opciones, diría que no vale la pena.

------------------------------- Adicional ------------------ --------------

DocumentFragment es una buena opción para mejorar la velocidad, pero no podemos crear el elemento de opción utilizando document.createElement(''option'') ya que IE6 y IE7 no lo admiten.

Lo que podemos hacer es crear un nuevo elemento de selección y luego agregar todas las opciones. Una vez que el bucle haya finalizado, agréguelo al objeto DOM real.

var myOptions = { val1 : ''text1'', val2 : ''text2'' }; var _select = $(''<select>''); $.each(myOptions, function(val, text) { _select.append( $(''<option></option>'').val(val).html(text) ); }); $(''#mySelect'').append(_select.html());

¡De esta manera modificaremos DOM solo una vez!


Tenga en cuenta que la solución de @ Phrogz no funciona en IE 8, mientras que @ nickf funciona en todos los principales navegadores. Otro enfoque es:

$.each(myOptions, function(val, text) { $("#mySelect").append($("&lt;option/&gt;").attr("value", val).text(text)); });


U puede usar directo

$"(.ddlClassName").Html("<option selected=/"selected/" value=/"1/">1</option><option value=/"2/">2</option>")

-> Aquí puedes usar la cadena directa



prueba esta función:

function addtoselect(param,value){ $(''#mySelectBox'').append(''&lt;option value=''+value+''&gt;''+param+''&lt;/option&gt;''); }


usando jquery puedes usar

this.$(''select#myid'').append(''<option>newvalue</option>'');

donde " myid " es el ID de la lista desplegable y newvalue es el texto que desea insertar.


Es posible que desee borrar su DropDown primero $ (''# DropDownQuality''). Empty ();

Mi controlador en MVC devolvió una lista de selección con solo un elemento.

$(''#DropDownQuality'').append( $(''<option></option>'').val(data[0].Value).html(data[0].Text));