1. 程式人生 > 其它 >誤用箭頭函式導致 jQuery中serializeArray()取不到值

誤用箭頭函式導致 jQuery中serializeArray()取不到值

技術標籤:javascriptjqueryes6

如下所示,表單加了name屬性,其他都沒加,表單是沒有問題的,查了網上的說要加readonly屬性,加了根本就無法輸入,不適用當前,多番試驗,發現不用箭頭函式就行了,難道是jq不支援es6???,但是如果註釋掉serializeArray()函式,下面的return false又確實能阻止表單的提交。

    //為表單新增提交事件
    $('#loginForm').on('submit',()=>{
        //獲取表單中使用者輸入的資訊
        //返回的是一個數組[{name:'email',value:'value'}]
var f = $(this).serializeArray() console.log(f); //阻止表單預設提交的行為 return false })

改成function(){}形式,可以輸出

    //為表單新增提交事件
    $('#loginForm').on('submit',function(){
        //獲取表單中使用者輸入的資訊
        //返回的是一個數組[{name:'email',value:'value'}]
        var f = $(this).serializeArray
() console.log(f); //阻止表單預設提交的行為 return false })

補檔,檢視別人的部落格說是箭頭函式沒有自身的this,這樣就解釋得通了,$(this)無法取到想讓他取到的值,所以輸出了空陣列

https://segmentfault.com/a/1190000007074846
裡面講解了什麼時候不能用箭頭函式
新增連結描述

https://blog.csdn.net/qq_38774121/article/details/88038785
在這裡插入圖片描述