Domanda

Come mai questo non funziona (funzionamento a vuoto su un elenco di selezione <select id="requestTypes"></select>

$(function() {

        $.getJSON("/RequestX/GetRequestTypes/", showRequestTypes);

    }
    );


    function showRequestTypes(data, textStatus) {

        $.each(data,
            function() {

                var option = new Option(this.RequestTypeName, this.RequestTypeID);
                // Use Jquery to get select list element
                var dropdownList = $("#requestTypes");

                if ($.browser.msie) {
                    dropdownList.add(option);
                }

                else {

                    dropdownList.add(option, null);

                }
            }
            );

        }

Ma questo non:

  • Sostituire:

    var dropdownList = $("#requestTypes");

  • Con pianura vecchio javascript:

    var dropdownList = document.getElementById("requestTypes");

È stato utile?

Soluzione

$("#requestTypes") restituisce un oggetto jQuery che contiene tutti gli elementi selezionati.Si sta tentando di chiamare il add() metodo di un singolo elemento, ma invece si sta chiamando il add() metodo di un oggetto jQuery, che fa qualcosa di molto diverso.

Per poter accedere al DOM di per sé elemento, è necessario trattare l'oggetto jQuery come un array e ottenere il primo elemento di fuori di esso, utilizzando $("#requestTypes")[0].

Altri suggerimenti

Per impostazione predefinita, selettori jQuery restituire l'oggetto jQuery.Aggiungere questo per ottenere l'elemento DOM restituiti:

 var dropdownList = $("#requestTypes")[0];

Per cose come questa, io uso texotela selezionare la casella di plugin con la sua semplice ajaxAddOption funzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top