2017-10-18 46 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')