为什么$(this).children('option:selected') 取不到值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!-- <script src="../js/jquery.js"></script> -->
    <script src='https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js'></script>
    <title>Document</title>
    <script>
    $(function(){
        // $('select[name="mySelect"]').on('change',(e)=>{
        $('#aa').on('change',(e)=>{
            console.log(1111);
            console.log('value', $('#aa').val());
            console.log('e',e.target.value);
            let this_val = $(this).children('option:selected').val();
            console.log('this_val',this_val);
        });
    })
    </script>
</head>
<body>
    <select name="mySelect" id="aa">  
        <option value="1">one</option>  
        <option value="2">two</option>  
        <option value="3">three</option>  
    </select> 
</body>
</html>

我select 选择通过$(this)取不到当前的获取值,后来我看网上说要$(this).children('option:selected');
但是 不知道为什么 总是undefined ?

阅读 5.3k
4 个回答

你用了箭头函数=> this的指向不是你想象中的$('#aa')了

你应该了解一下箭头函数的作用 以及为什么要用箭头函数
箭头函数没有自己的this 他的this是来自外层作用域

把箭头函数改成普通的function函数就可以了

箭头函数相当于

(function() {}).bind(this);

jquery在执行回调函数的时候一般会动态绑定一个this,所以在jquery中,通常不要绑定this,也不要用箭头函数。

兄弟箭头函数里的this是当前作用域中的this,简单的说就是this指向混乱,你可以用bind绑定下,也可以放弃箭头函数的使用,这样就会绑定到该点击事件的对象上了。

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