2017-10-18 44 views
0

所以我创建了一个函数,有2个参数的CSS方法,我运行它,但参数正在阅读。宽度值上悬停和关闭工作,但瓦特/ E值i的参数通过越来越阅读jQuery的CSS方法将不会接受函数参数

function growImg(targetClass, imgClass, growPosition, growVal){ 
    $(targetClass).hover(
     function(){ 
     $(imgClass).css({'width': '25rem', growPosition : growVal});    
     }, 
     function(){ 
     $(imgClass).css({'width' : '12em'}); 
     } 
    ) 
    } 

// Calling function here 
growImg('.img-profile', '.profile-img', 'top', '25px') 

任何帮助将是巨大的

回答

4

您可以使用computed property names

$(imgClass).css({'width': '25rem', [growPosition] : growVal}); 

您也可以使用shorthand property names

function growImg(targetClass, imgClass, top){ 
    $(targetClass).hover(
     function(){ 
     $(imgClass).css({'width': '25rem', top});    
     }, 
     function(){ 
     $(imgClass).css({'width' : '12em'}); 
     } 
    ) 
    } 

// Calling function here 
growImg('.img-profile', '.profile-img', '25px') 
1

我猜我即JavaScript正在创建一个名为growPosition的密钥并为其分配值growVal。原因是可以在不用引号添加键的情况下创建JavaScript对象。解析器将无法区分具有名为growPosition的密钥的新对象和变量growPosition。尝试使用对象括号语法:

function growImg(targetClass, imgClass, growPosition, growVal){ 
    $(targetClass).hover(
     function(){ 
      var customCSS = { width: '25rem' }; 
      customCSS[growPosition] = growVal; 

      $(imgClass).css(customCSS);    
     }, 
     function(){ 
      $(imgClass).css({'width' : '12em'}); 
     }); 
    } 

// Calling function here 
growImg('.img-profile', '.profile-img', 'top', '25px')