如果绑定的事件里面带了参数,请问应该如何移除呢?

如果绑定的事件里面带了参数,请问应该如何移除呢?

这样移好像移除不掉

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <button id="test1">1111</button>
    <script>
 var test1 = document.getElementById('test1');
 function fn1(str) {
            alert(str);
 }

        test1.addEventListener('click', function() {
            fn1('今天天气不错!');
 }, false);

 test1.removeEventListener('click', function() {
            fn1('今天天气不错!');
 }, false);
        
 </script>
</body>
</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
一路电光带火花 2018-02-11 16:41:17

如果要使用事件监听,且还要解绑,只能这么写~
如果要传参,那就换个方式写呗,使用click

小丸子爱吃菜 2018-02-11 14:16:19

http://img1.sycdn.imooc.com//climg/5a7fdf7500010bbd06750295.jpg

老师课程里面讲的很详细了,如果要实现移除的话,不要用匿名函数,要保持它们的参数一致,还是要去好好听课的。

祝学习愉快!

  • 提问者 VisaW #1
    如果按您这样写,那调用fn1函数的时候就没法往里面穿参数了,我想往里面传参数,而不是固定的str。
    2018-02-11 15:50:48
  • 黄永泰 回复 提问者 VisaW #2
    按照它这样写的话其实也是可以往里面传递参数的借助jQuery的proxy方法 test1.addEventListener('click',$.proxy(fn1,window,'哈哈哈'), false); 比如这样其中proxy的第一个参数是函数本身 第二个参数是修正函数中的this 由于本列中 fn1中没有用到this 所以随意 第三个参数是你要传递的参数
    2018-02-11 22:32:48
  • 当然如果你不想用jquery的话 你可以去查看看 这个proxy方法是怎么用原生js实现的 在jquery中源码是这样的 你可以照这个写出一个原生js实现的proxy proxy: function (fn, context) { var tmp, args, proxy; if (typeof context === "string") { tmp = fn[context]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if (!jQuery.isFunction(fn)) { return undefined; } // Simulated bind args = core_slice.call(arguments, 2); proxy = function () { return fn.apply(context, args.concat(core_slice.call(arguments))); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }
    2018-02-11 22:34:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师