2014-09-26 50 views
2

查找下面的代碼。我想在IE中使工作功能相同。我掙扎,使其在IE瀏覽器9jquery attr函數在IE中不工作9

<html> 
    <head> 
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script> 
    <script type="text/javascript"> 
     var colors= ["#99b433", "#00a300", "#1e7145"]; 
     $(document).ready(function(){ 
      addBarColor(); 
     }); 

     var addBarColor = function(){ 
      $('#lineColors').html(""); 
      for(var color=0; color<colors.length; color++){ 
       //Loading List of colors 
       var chartBarColor = colors[color]; 
       var li = document.createElement('li'); 
       li.style.width = "50px"; 
       li.style.backgroundColor = chartBarColor; 

       //Adding Remove button to it. 
       var remove = document.createElement('span'); 
       remove.id = "remove"+color; 
       remove.style.cursor="pointer"; 
       remove.style.marginLeft = "40px"; 

       //remove.onclick = function(){removeBarColor(color)}; 

       //Adding x image 
       var removeImg = document.createElement('img'); 
       removeImg.src = "https://cdn1.iconfinder.com/data/icons/diagona/icon/10/101.png"; 

       //Appedning everything to UL 
       remove.appendChild(removeImg); 
       li.appendChild(remove); 
       $('#lineColors').append(li); 

       $("#remove"+color).attr('onclick', 'removeBarColor(\''+color+'\')'); 
      } 
     } 

     //Removing the color from the array 
     var removeBarColor = function (index){ 
      alert(index); 
      colors.splice(index, 1); 
      console.log(colors); 
      addBarColor(); 
     }; 
    </script> 
    </head> 
    <body> 
     <ul id="lineColors"> 
     </ul> 
    </body> 
</html> 

jQuery的ATTR()函數似乎並不在IE 9是工作或者我想這remove.onclick =函數(){removeBarColor(彩色) };這也似乎並沒有在IE9中工作。

希望我的問題清楚。感謝您對預期的幫助。

回答

8

我假設你在談論這個attr行:

$("#remove"+color).attr('onclick', 'removeBarColor(\''+color+'\')'); 

無論是工作還是在其他地方沒有,如果你使用jQuery(或者甚至直言不掛鉤這樣的事件處理程序,如果你不是);利用現代技術連接處理程序,尤其是因爲它與你已經使用的lib非常簡單:

$("#remove"+color).on('click', removeBarColor.bind(null, color)); 

依賴ES5的Function#bind(可墊高);或者,你可以使用jQuery的proxy

$("#remove"+color).on('click', $.proxy(removeBarColor, null, color)); 

Live Example

無論哪種方式,這是什麼代碼所做的就是創建一個新的函數,調用它時,會調用removeBarColor傳遞color作爲index參數(和設置this沒有什麼特別;好吧,好吧,在鬆散模式下它將是window,嚴格模式下它將是null)。然後它將該函數分配爲click處理程序。

另一種方法是保存元素上的顏色,然後通過查看被點擊的元素來運行removeBarColor,但上面是最小修改方法。

+1

它的工作很棒的Crowder。感謝您的支持。 :) – 2014-09-26 10:31:59