Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-绑定()的IE8替代方案_Javascript - Fatal编程技术网

Javascript-绑定()的IE8替代方案

Javascript-绑定()的IE8替代方案,javascript,Javascript,如何在IE 8中实现这一点?或者什么是最直接的选择?我想把这个作为评论添加,但让我发了一篇帖子。“请使用jQuery并节省您在此类问题上的时间。” 如果在不久的将来碰巧使用了jQuery img.attachEvent("onclick", function(img){ alert(img.id); }.bind(null,img)); 下面的页面上有一个很好的兼容性脚本。只需将其复制并粘贴到脚本中即可。 使用事件.src元素: $(document).on('click', '.cl

如何在IE 8中实现这一点?或者什么是最直接的选择?

我想把这个作为评论添加,但让我发了一篇帖子。“请使用jQuery并节省您在此类问题上的时间。

如果在不久的将来碰巧使用了
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;
};