Предварительный выбор значений в mulitselect с помощью jQuery
-
19-09-2019 - |
Вопрос
У меня есть набор значений, которые присутствуют при загрузке страницы:например [1193,1184,2372].
У меня есть выпадающий список, который может принимать одно значение, например, $(".ddl").dropdownchecklist().val(1193);
Когда я повторно привязываю выпадающий список, это значение выбирается правильно.Однако я попытался передать свой массив, содержащий несколько значений, методу val (), но он не выбирает значения.Я в некотором роде ожидал этого.Я не уверен, как лучше всего осуществить предварительный выбор.
Я попытался выполнить итерацию своего массива, чтобы создать атрибут filter для применения следующим образом:$(".ddl [значение*='1184'][значение*='9067'][значение*='14841']").attr('выбранный','selected');
но это не работает.Я не хочу перебирать все параметры в ddl и устанавливать для них значение выбрано, если они совпадают, поскольку существуют сотни параметров, и это не будет хорошо влиять на производительность, особенно если предварительно задано только 2 параметра.
Есть какие-нибудь идеи?
Решение
Создайте строку из выбранных, чтобы создать строку выбора jQuery и поместить ее в функцию .find():
var str = '';
var arrLength = selectedArray.length;
$.each(selectedArray, function(i){
str += 'option[value*='+selectedArray[i]+']';
if((i+1) != arrLength){
str += ', ';
}
});
$('.ddl').find("option[value*='1184'], option[value*='9067'], option[value*='14841']")
.attr('selected','selected');
Также обратите внимание, что при сравнении выпадающего списка со значением вы ищете option
элемент в select, а не сам select элемент.
Другие советы
У меня получилось работать с этим, но приведенный выше ответ выглядит как хорошее решение:
$.each(arr, function(i,s)
{
$(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});
Не уверен, что, скорее всего, будет быстрее, но шахты немного чище.