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

自行脑补
  • 1k
<!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中传入参数怎么办?

回复
阅读 4.4k
4 个回答

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

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

Mr豆花
  • 4
新手上路,请多包涵

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

  $('select[name="province"]').on('change',function(){
        fn($(this));
    });
    function fn(obj){
        console.log(obj);
    }

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏