Как добавить параметры в раскрывающийся список с помощью jQuery?



Как говорится в вопросе, как добавить новый параметр в выпадающий список с помощью jQuery?



спасибо

713   11  

11 ответов:

без использования каких-либо дополнительных плагинов,

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

если у вас было много вариантов, или этот код нужно было запускать очень часто, то вы должны изучить использование DocumentFragment вместо того, чтобы изменять DOM много раз без необходимости. Только для нескольких вариантов я бы сказал,что это не стоит того.

------------------------------- добавлено --------------------------------

DocumentFragment - это хороший вариант для повышения скорости, но мы не можем создать элемент с помощью document.createElement('option') так как IE6 и IE7 не поддерживают его.

что мы можем сделать, это создать новый элемент select, а затем добавить все параметры. После завершения цикла добавьте его к фактическому объекту DOM.

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());

таким образом, мы будем изменять DOM только один раз!

без плагинов, это может быть проще без использования столько jQuery, вместо того, чтобы идти немного больше старой школы:

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

Если вы хотите указать, является ли опция a) выбранным значением по умолчанию и b) должна быть выбрана сейчас, вы можете передать еще два параметра:

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

с плагином: окно выбора jQuery. Вы можете сделать это:

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

вы можете сначала очистить выпадающий список $('#DropDownQuality').пустой();

У меня был контроллер в MVC, возвращающий список выбора только с одним элементом.

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

добавить элемент в список в начале

$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');

добавить элемент в список в конце

$('<option value="6">Java Script</option>').appendTo("#ddlList");

общая операция выпадающего списка (Get, Set, Add, Remove) с помощью jQuery

Pease Примечание @Phrogz решение не работает в IE 8 в то время как @nickf работает во всех основных браузерах. Другой подход:

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

U может использовать direct

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

-> здесь u может использовать прямую строку

и также использовать .добавить (), чтобы добавить параметр в начало списка параметров. http://api.jquery.com/prepend/

С помощью jQuery вы можете использовать

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

где "myid" - это id из выпадающего списка и newvalue текст, который вы хотите вставить..

мне нужно было добавить столько вариантов выпадающих списков, сколько было выпадающих списков на моей странице. Поэтому я использовал его таким образом:

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++;
    });
});

это динамически настроить выпадающее меню со значениями типа 1 до n, и автоматически выбирается значение того, что выпадающем в (т. е. 2-й выпадающего получил "2" в поле и т. д.).

Это было смешно, что я не могу использовать this или this.Object или $.obj или что-нибудь подобное в мой 2-ой .each(), хотя --- я на самом деле должен был получить конкретный Идентификатор этого объекта, а затем захватить и передать весь этот объект в мою функцию, прежде чем он будет добавлен. К счастью, идентификатор моего выпадающего списка был отделен"_", и я мог его схватить. Я не чувствую, что должен был, но он продолжал давать мне исключения jQuery в противном случае. Что-то, что другие, борющиеся с тем, что я был, могли бы наслаждаться знанием.

попробуйте эту функцию:

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

Comments

    Ничего не найдено.