0

我有以下功能,

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'并且由于某种原因我的 each() 函数没有被执行..我这样打电话setDropdownValue($("#dp1"),'Bat');我错过了什么吗?

4

3 回答 3

3

dropdownId应该只是一个字符串,你为什么要传递$('#dp1")一个 jQuery 对象?

你应该只是通过'dp1'

于 2013-04-25T13:28:17.320 回答
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 ....有时它会导致一些冲突

于 2013-04-25T13:29:57.520 回答
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”,而不是在选项本身上。我以前见过这种方法的怪癖。

于 2013-04-25T13:33:30.223 回答