这个jquery每个()选择选项有什么问题?

时间:2013-04-25 13:25:41

标签: jquery each

我有以下功能,

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');我错过了什么?< / p>

3 个答案:

答案 0 :(得分:3)

dropdownId应该只是一个字符串,为什么要传递{j}对象的$('#dp1")

您应该改为'dp1'

答案 1 :(得分: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 ....有时会导致一些冲突

答案 2 :(得分: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',而不是选项本身。我以前用这种方法看过怪癖。