jquery中select事件绑定怎么获取不到$(this)?

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
            <select name="province"><option>请选择</option><option>请选择</option><option>请选择</option></select>
            <select  name="city"><option>请选择</option></select>
            <select  name="area"><option>请选择</option></select>
</body> 
  <script>
    $('select[name="province"]').bind('change',fn());
    function fn(){
        console.log($(this));
    }
  </script>
</html>

控制台的结果window,而且我还没点击select,还没触发change就显示window,
请问问题出在哪,怎么才能正确获取this?

ps:把bind里面的fn(),改为fn,确实可以console出$(this),但是如果要在fn中传入参数怎么办?

阅读 2.4k
评论 更新于 2017-09-16
    4 个回答
    T_one
    • 1.2k

    $('select[name="province"]').bind('change',fn());
    改为
    $('select[name="province"]').bind('change',fn);

    你之前那个在bind时就运行了。。。

    评论 赞赏 2017-09-16
      Mr豆花
      • 4
      • 新人请关照

      $('select[name="province"]').bind('change',fn); 把这里的()去掉就可以了。

      评论 赞赏 2017-09-16
          $('select[name="province"]').on('change',function(){
                fn($(this));
            });
            function fn(obj){
                console.log(obj);
            }
        评论 赞赏 2017-09-16

          你这个this指向window,因为你的外层环境就是window啊

          评论 赞赏 2017-09-20
            撰写回答

            登录后参与交流、获取后续更新提醒