Простой вопрос, пока нет ответов. Можно ли установить selectedIndex раскрывающегося списка Select2 с помощью порядкового номера? Я использую Select2 версии 3.5.2, и мне довольно легко иметь выбранный элемент, используя значение, как в:
$(elem).select2('val','my value',false);
однако попытка сделать выбор с помощью порядкового номера полностью ускользает от меня. Некоторые примеры того, что работает с обычным раскрывающимся списком, но не с Select2:
$(elem + " option")[1].selected = true; //no worky
$(elem + " option:eq(1)").attr("selected", "selected"); //no worky
$(elem).prop({ selectedIndex: 1 });//no worky
Причина, по которой мне это нужно, состоит в том, чтобы иметь выбор по умолчанию, который не является первым, поскольку Select2 использует первый параметр (индекс: 0) для заполнения подсказок, поэтому я хочу по умолчанию использовать индекс: 1 (и они могут иметь много разные значения, поэтому я не могу просто установить выбранный параметр через значение - это должен быть порядковый номер.
ОБНОВЛЕНИЕ: Проблема может быть здесь (значение пусто для всех вариантов ВСЕХ, а также для требуемой пустой опции) - это может быть перепутано.
<option selected="selected" value=""></option>
<option value="">All Sizes</option>
<option value="6ad0a51e-e58c-4431-914d-b3f1a6b2c08e">18in X 18in</option>
<option value="a00b492e-08fa-4824-ad86-9ffb8a510be2">9.75in X 39in</option>
<option value="423b2a4e-2876-4969-84e3-3601e3fab524">19.7in X 19.7in</option>
<option value="9d4f4f13-47f6-422c-bbaf-f0911b5c156c">12in x 36in</option>
<option value="d417f0bc-d1fe-4d6b-bf41-aa081907254c">22in X 22in</option>
<option value="d1dc3ca6-fc3c-47f8-8b71-80219c8fd98b">24in X 24in</option>
<option value="c92c91a3-dfdb-4240-83e2-c08771748e47">18in x 36in</option>
<option value="4741d76f-628f-4ca0-a871-dfe2c4986e66">19.7in X 39.4in</option>
<option value="f70791ba-c56a-403b-b23e-fb2e8869ba07">36in X 36in</option>
<option value="7f70b445-a890-4838-a9f5-4c3100643fdd">39in X 39in</option>
Я дам первому варианту значение («все размеры», «все цвета», «только товары в наличии», «только категории распродажи» и т. д.) и установлю для них то же значение, что и «-» из базы данных. как первый элемент (таким образом, мне не нужно сравнивать). Было бы неплохо установить selectedIndex (много старого кода, который нужно обновить) - я опубликую его в своих запросах для будущих версий Select2.
ОБНОВЛЕНИЕ: вот как выглядит функция
function setDD(elem, qs) {
var q = QueryString(qs);
if (!(typeof q === "undefined")) {
if (q === '') {
//$(elem + " option")[1].selected = true; //no worky
//$(elem + " option:eq(1)").attr("selected", "selected"); //no worky
//$(elem).prop({ selectedIndex: 1 });//no worky
//$(elem).find("option:eq(1)").prop("selected", "selected"); //no worky
//$(elem + " option:eq(1)").prop("selected", "selected"); //no worky
//$(elem).prop('selectedIndex', 1).change(); //no worky
} else {
$(elem).select2('val', q, false);
};
}; //else leave the dropdown at its default to show the hint (until user actually makes a selection)
};
$(elem + " option:eq(1)").prop("selected", "selected");
попробуйте использовать prop вместо attr или вот так$(elem).find("option:eq(1)").prop("selected", "selected");
- person guradio   schedule 29.07.2017$(elem).prop('selectedIndex', 1).change();
. - person John S   schedule 29.07.2017