2013-04-25 65 views
0

我有以下功能,这个jquery每个()选择选项有什么问题?

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之外,是否有一个理由让你完成每个功能?你可以通过设置$('#'+ dropdownId).val(selectedValue)来设置选择的值。你也在选项上调用.val()函数,而不是在select上。 – riceroni 2013-04-25 13:28:03

+0

你是怎么打电话来的? – Gautam3164 2013-04-25 13:31:46

回答

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',而不是在选项本身上。这种方法我以前见过怪癖。