Javascript-绑定()的IE8替代方案
如何在IE 8中实现这一点?或者什么是最直接的选择?我想把这个作为评论添加,但让我发了一篇帖子。“请使用jQuery并节省您在此类问题上的时间。” 如果在不久的将来碰巧使用了Javascript-绑定()的IE8替代方案,javascript,Javascript,如何在IE 8中实现这一点?或者什么是最直接的选择?我想把这个作为评论添加,但让我发了一篇帖子。“请使用jQuery并节省您在此类问题上的时间。” 如果在不久的将来碰巧使用了jQuery img.attachEvent("onclick", function(img){ alert(img.id); }.bind(null,img)); 下面的页面上有一个很好的兼容性脚本。只需将其复制并粘贴到脚本中即可。 使用事件.src元素: $(document).on('click', '.cl
jQuery
img.attachEvent("onclick", function(img){
alert(img.id);
}.bind(null,img));
下面的页面上有一个很好的兼容性脚本。只需将其复制并粘贴到脚本中即可。
使用事件.src元素
:
$(document).on('click', '.class', function() {
// code here
});
我会给你一个JSFIDLE,但是JSFIDLE在IE8中失败了
编辑:另一种解决方案可能需要使用闭包/变量解决方案。大概是这样的:
img.attachEvent("onclick", function(ev){
alert(ev.srcElement.id);
});
这将创建img
的本地副本,以便您可以在事件侦听器中使用它
除此之外,我的建议是完全忘记IE 8。(J/K)我发现了一个聚填料
我不想感谢上面的两条评论是jQuery和普通javascript粉丝之间非常激动人心的决斗:-)线索在标题中,这是一个javascript问题而不是jQuery问题。在投票前,有人能告诉我答案有什么问题吗,所以我可以纠正。他几乎没有说我不想感谢使用jQuery。我想这就是你被否决的原因(只是一个猜测,不是我干的。)没关系,每个人都有权发表自己的观点,但这并不意味着答案是错误的,更多的是针对我给出的问题的上下文,他们声称兼容性脚本与IE9兼容…抱歉,这只是一个基本示例,我需要传递其他变量。因此,您可能应该使用闭包/变量解决方案或使用@JanTuroň答案中提到的polyfill。非常好的链接+1,谢谢!看见这个答案有助于html2canvas库:
(function(){
var _img=img;
_img.attachEvent("onclick",function(ev){
alert(_img.id);
});
})();
Function.prototype.bind = Function.prototype.bind || function(b) {
if (typeof this !== "function") {
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var a = Array.prototype.slice;
var f = a.call(arguments, 1);
var e = this;
var c = function() {};
var d = function() {
return e.apply(this instanceof c ? this : b || window, f.concat(a.call(arguments)));
};
c.prototype = this.prototype;
d.prototype = new c();
return d;
};