2015-11-26 18 views
0

我是一個新手,javascript和jQuery和我每天都學到新的東西...... 我工作的一個文件,我發現自己與此代碼:jquery代碼優化(方法attr()爲兩個不同的div)?

  $('#mobileuser span').attr({      
       'class': 'fa fa-user', 
       'style':'' 
      }); 

      $('#mobilesearch span').attr({     
       'class': 'fa fa-search', 
       'style':'' 
      }); 

摸索優化我嘗試此解決方案,但不起作用:

var fontawesome= {   
    mobileuser: 'fa fa-user', 
    mobilesearch: 'fa fa-search'  
} 

$('#mobilesearch span, #mobileuser span').attr({      
       'class': fontawesome[$(this).parent('div').attr('id')], 
       'style':'' 
      }); 

你可以建議我最佳的方式來優化此代碼?

謝謝你的問題很多,不好意思:)

回答

1

試試這個:

$('#mobilesearch span, #mobileuser span').each(function() { 
    $(this).attr({     
     'class': fontawesome[$(this).parent('div').attr('id')], 
     'style':'' 
    }); 
}); 
+0

你不需要。每個() – JCharette

+0

也許不需要。每個但你的代碼@gladsocc是工作 – Borja

4

你可以通過一個函數來.attr。爲每個匹配選擇器的元素調用該函數,在該函數內,this是特定元素。它應該返回具有特定屬性的對象。

$('#mobilesearch span, #mobileuser span').attr(function() { 
    return {     
     'class': fontawesome[$(this).parent('div').attr('id')], 
     'style':'' 
    }; 
}); 
+0

唯一我嘗試讓你知道:) – Borja

+0

我會建議更換' #id-selector span'只有'.class-selector',它將被添加到將保存圖標的元素(本例中爲'span'標籤)。 – madcorp

+0

@Barmar,但你的代碼添加「返回」兩個跨度?真正? – Borja