Подтвердить что ты не робот

JQuery создать новый вариант выбора

У меня есть следующие функции в регулярных JavaScript, создающих опции выбора. Есть ли способ сделать это с помощью jQuery без использования объекта формы? Возможно, хранение опций в виде массива объектов JSON и разбор его в вызывающей функции...

function populate(form)
{
form.options.length = 0;
form.options[0] = new Option("Select a city / town in Sweden","");
form.options[1] = new Option("Melbourne","Melbourne");
}

Ниже я называю функцию выше:

populate(document.form.county); //county is the id of the dropdownlist to populate.    
4b9b3361

Ответ 1

Что-то вроде:

function populate(selector) {
  $(selector)
    .append('<option value="foo">foo</option>')
    .append('<option value="bar">bar</option>')
}

populate('#myform .myselect');

Или даже:

$.fn.populate = function() {
  $(this)
    .append('<option value="foo">foo</option>')
    .append('<option value="bar">bar</option>')
}

$('#myform .myselect').populate();

Ответ 2

Что насчет

var option = $('<option/>');
option.attr({ 'value': 'myValue' }).text('myText');
$('#county').append(option);

Ответ 3

Как насчет

$('#county').append(
    $('<option />')
        .text('Select a city / town in Sweden')
        .val(''),
    $('<option />')
        .text('Melbourne')
        .val('Melbourne')
);

Ответ 4

Если вам нужно сделать один элемент, вы можете использовать эту конструкцию:

$('<option/>', {
    'class': this.dataID,
    'text': this.s_dataValue
}).appendTo('.subCategory');

Но если вам нужно напечатать много элементов, вы можете использовать эту конструкцию:

function printOptions(arr){
    jQuery.each(arr, function(){
        $('<option/>', {
            'value': this.dataID,
            'text': this.s_dataValue
        }).appendTo('.subCategory');
    });
}

Ответ 5

Это сбивает с толку. Когда вы говорите "объект формы", вы имеете в виду "<select> element"? Если нет, ваш код не будет работать, поэтому я предположим, что ваша переменная form на самом деле является ссылкой на элемент <select>. Почему вы хотите переписать этот код? То, что у вас есть, работало во всех браузерах с возможностью просмотра сценариев с 1996 года и не прекратит работать в ближайшее время. Выполнение этого с помощью jQuery немедленно сделает ваш код более медленным, более подверженным ошибкам и менее совместимым в браузерах.

Здесь функция, которая использует ваш текущий код в качестве начальной точки и заполняет элемент <select> из объекта:

<select id="mySelect"></select>

<script type="text/javascript>

function populateSelect(select, optionsData) {
    var options = select.options, o, selected;
    options.length = 0;
    for (var i = 0, len = optionsData.length; i < len; ++i) {
        o = optionsData[i];
        selected = !!o.selected;
        options[i] = new Option(o.text, o.value, selected, selected);
    }
}

var optionsData = [
    {
        text: "Select a city / town in Sweden",
        value: ""
    },
    {
        text: "Melbourne",
        value: "Melbourne",
        selected: true
    }
];

populateSelect(document.getElementById("mySelect"), optionsData);

</script>

Ответ 6

Действительно простой способ сделать это...

// create the option
var opt = $("<option>").val("myvalue").text("my text");

//append option to the select element
$(#my-select).append(opt);

Это может быть сделано разными способами, даже в одну строку, если вы действительно этого хотите.

Ответ 7

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

мой код: - HTML: -

<.select style = "width: auto" name = "height" id = "height1">

JQuery: -

$ ( "# Height1"). Нажмите (функция() {

        var radioValue = $("input[name='height']:checked").val();

        if(radioValue=="f") {
            $("option").remove();
            var f = 4;
            var c = 0;
            while (f < 7) {
                if (c==12) {
                    c = 0;
                     ++f;
                    $("#height1").append($("<option>").attr("value", f+"."+c).text(f+"."+c));

                }
                else{ $("#height1").append($("<option>").attr("value", f+"."+c).text(f+"."+c));}
                ++c;
            }}

    })