2013-04-25 3 views
0

У меня есть ниже функция,Что не так с этим jquery each() select options?

function setDropdownValue(dropdownId,selectedValue){ 
      $('#'+dropdownId+' option').each(function(){ 
       if ($(this).val().toLowerCase()==selectedValue.toLowerCase()){ 
        //found the option i was looking for, do what i want 
        $(this).val(selectedValue); 
       } 
      }); 
     } 

И я передаю dropdownId=$('#dp1") и selectedValue='Bat' и по какой-то причине моей каждой функции() не получает выполненную .. Я звоню как этот setDropdownValue($("#dp1"),'Bat'); я упускаю что-то ??

+0

Помимо того, что у вас есть toLowerCase, есть ли причина, по которой вы выполняете каждую функцию вообще? Вы можете установить значение select, выполнив $ ('#' + dropdownId) .val (selectedValue); Вы также вызываете функцию .val() в опции, а не в выборе. – riceroni

+0

как вы звоните ... через событие whick ... ?? – Gautam3164

ответ

3

dropdownId должно быть просто строкой, почему вы проходите $('#dp1"), который является объектом jQuery?

Вместо этого вы должны просто передать 'dp1'.

0

Попробуйте как

$('#dp1 option').each(function(){ 
      if ($(this).val().toLowerCase()==selectedValue.toLowerCase()){ 
       //found the option i was looking for, do what i want 
       $(this).val(selectedValue); 
      } 
     }); 

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

0

Я думаю, что лучшим решением было бы написать функцию следующим образом, как это будет поддерживать ваш строчная логика

function setDropdown(id, value){ 
    var dropdown = $('#' + id); 
    dropdown.find('option').each(function(){ 
     if($(this).val().toLowerCase() == value.toLowerCase()){ 
      dropdown.val($(this).val()); 
      return; 
     } 
    }); 
} 

Я бы назвал эту функцию как так ...

setDropdown('myDropdownId', '0000-AABBCC'); 

Я склонен полагать, что вы должны установить «val» на выбор, а не на сами опции. Я уже видел причуды с этим методом.

Смежные вопросы