在項目中常會用到多圖上上傳,那就需要多圖上傳后需要預覽,並且能刪掉傳錯(不想傳)的圖,然而 測試了半天 並不知道jq怎么寫,parent()parents()用了半天無果,罷了,還是用原生js來寫。這就涉及到了parentNote,子元素的父元素。
於是在添加圖片的時候很簡單,一個id為img的盒子里放上傳后的預覽圖,一個id為hidden_input的盒子用來裝隱藏域
html代碼如下:
js代碼:
由於在原生js當中,要刪除該元素只能通過父元素刪除子元素的方法,規定我們要知道自己刪除的是哪個元素並且知道它的父元素是誰。所以就要找父元素,可能還要找爺爺,甚至太爺爺...
至於在后台,如果是一個一條的數據,直接添加就可以,如果是當前圖片路徑需要放在一個字段里,用implore()合並一下再放就可以了。
需要說一下的是:因為是改的現有后台模板文件,於是傳過來的過程中會多一個name為file 的隱藏域,並且沒看懂它是怎么出來的,這就導致了我后台拿數據的時候很傷感,原本的嚴格字段模式又不想懂,於是百度了一下,發現可以用strict(false)l來暫時關掉嚴格模式,不影響全局。
如下:
當然,如果你是通過表連接查處的幾條images數據的話,修改的時候,在新數據上傳之前,需要把舊有的數據清空;比如你遍歷出id為1,2,3,user_id同為1的三張圖片,所以現在有三個隱藏域,3個img,點擊那個在頁面上同樣會消失,但是后台數據不會更改,於是需要先把這三條刪除,再上傳新的數據,不過這樣會導致id一直增大,暫時沒有想到什么好的辦法解決。
當然還有別的方法,這里就不一一闡述了。
最近添加了在點擊前台的刪除圖片按鈕時候,同時刪除本地文件的方法,用ajax執行,代碼如下
js部分修改后如下:
偶爾會報錯 說找不到parentNode,但是本地文件又已經被刪除了,不知道為什么.操作不太快的情況下不會出現這種情況
另外留一個可以讓圖片在div里居中的方法 , 百度了一堆,這個最好使
出來的效果大概是這樣: