Вопрос

У меня есть набор значений, которые присутствуют при загрузке страницы:например [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');
});    

Не уверен, что, скорее всего, будет быстрее, но шахты немного чище.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top