Javascript Jquery attr函数在IE 9中不起作用
找到下面的代码。我想在IE中使用相同的功能。我正在努力使它在IE 9上工作Javascript Jquery attr函数在IE 9中不起作用,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,找到下面的代码。我想在IE中使用相同的功能。我正在努力使它在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"];
<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>
变量颜色=[“#99b433”、“#00a300”、“#1e7145”];
$(文档).ready(函数(){
addBarColor();
});
var addBarColor=函数(){
$('#lineColors').html(“”);
对于(var color=0;color我假设您正在谈论这条attr
行:
$("#remove"+color).attr('onclick', 'removeBarColor(\''+color+'\')');
无论它是否在其他地方工作,如果您正在使用jQuery,请不要像这样连接事件处理程序(或者,坦白说,如果您没有这样做),使用现代技术连接处理程序,特别是使用您已经使用的lib,这非常容易:
$("#remove"+color).on('click', removeBarColor.bind(null, color));
这依赖于ES5的函数#bind
(可以填充);或者,您可以使用jQuery的:
无论哪种方式,该代码所做的是创建一个新函数,当调用该函数时,该函数将调用removeBarColor
,将color
作为index
参数传入(并将this
设置为nothing;好的,在松散模式下它将是window
,在严格模式下它将是null
)。然后它将该函数指定为单击
处理程序
另一种方法是保存元素上的颜色,然后通过查看单击的元素让removeBarColor
工作,但以上是最小的mods方法。其工作非常拥挤。感谢您的支持。:)
$("#remove"+color).on('click', $.proxy(removeBarColor, null, color));