我正在嘗試使用jQuery可調整大小來調整我的div大小,除了在stop
事件之後,jQuery UI會將我的%
值還原爲pixel
值之後,我的工作狀態還不錯。如何強制jQuery調整大小以使用百分比?
我有一個工作小提琴這裏:http://jsfiddle.net/totszwai/j60h38fy/5/
當你拖動current
容器的第一次,它會正確地計算所有的價值,但stop
事件發生後,jQuery的用戶界面將更新%和變化它回到像素...所以下一次再拖動它時,%會丟失。
你如何強制jQuery將寬度值設置爲%?我可以在技術上使用setTimeout之類的東西,但這太難看了。
我不想要一個解決方案來處理像素中的div,因爲我可以在技術上在我的設置中添加n-divs,並且帶有%的代碼應該可以與n-div一起工作。
如果你看看我的neighbor
div,%保留在那裏,只有current
被覆蓋。我也嘗試過直接使用ui.element
以及將ui.size.width
設置爲我的%,但沒有任何一項工作。
更新:一種解決方法是將數據存儲每次在stop
事件,從來沒有在start
檢查一遍,但是,這仍然沒有解決的問題,即stop
返回不正確的像素值。查看更新的jsFiddle:http://jsfiddle.net/totszwai/j60h38fy/6/
如果只有jQuery resizable需要我的%值,則所有內容都按預期工作。
已解決:好的,我接受了apaul34208
的回答,因爲我曾問過如何使用%。但是,爲了實際解決我最初想要解決的問題,我最終使用了像素。請參閱我發佈below的答案,如果該答案對您有幫助,請改爲取而代之。
這一個比apaul的好,但是,你不應該使用
容器不一定是一個表,所以這將與divs一起工作。如果您使用
謝謝,很好的解決方案!它失敗了shift-drag測試(用於縱橫比縮放),但使用'.resizable()'的所有其他答案也是如此(因爲在按住shift的同時調整大小時高度發生了變化)。但是,通過這樣做很容易修復在'resizable'和'stop'事件中:'$(this).css('height','')'。我分叉你的小提琴,並在這裏添加了幾個修復和改進:http:// jsfiddle。net/8auwgazu/ – nothingisnecessary 2016-03-09 17:40:25
,我不得不刪除鬼和動畫和調整你的CSS了一下,
display: flex;
似乎導致意想不到的結果,但我想我可能有一個簡單的解決方案無意中發現:Working Example
來源
2014-12-02 01:55:10 apaul
在敲擊了一個早晨之後,我終於找到了完美的解決方案。它實際上比我想象的簡單得多,只是因爲我過於複雜的事情。
我試圖獲得它的動態大小
ui.helper
,並試圖在stop
上操縱鄰居元素。但我真正關心的是this
元素的寬度和近鄰元素的寬度,所以,我最終會做以下幾點:該解決方案適用於N + 1倍的DIV並排坐着。如果您用高度翻轉寬度,它也將與垂直堆疊的DIV一起使用。:)
乾杯!
Working jsFiddle
注:鬼和動畫從jQuery的UI選項仍然給奇怪的問題如前。這是從jQuery 2.0.2和jQuery-UI 1.10.3開始的,希望他們能儘快修補它。
來源
2014-12-02 15:53:47 codenamezero
我還以爲你要去跟%的工作可調整大小的元素,我誤解了問題?在Firefox和Chrome中,你的答案似乎都會返回px的寬度。 – apaul 2014-12-02 21:03:09
嗯...是的,你是對的。本來我想讓它與%一起工作,因爲我找不到適當調整DIV的方法。我想我可以接受你的答案,如果你可以修改它與n + 1 DIVs一起工作? – codenamezero 2014-12-03 13:58:07
今天晚些時候我會再試一次吧 – apaul 2014-12-03 14:02:13
我知道我的答案不是一個「良好的做法」,因爲它需要你定製一個經常更新的庫,但它解決了我的問題: 更改jquery-ui中的「resize」函數.js文件根據需要操作寬度。 在我來說,我需要調整大小完全忽略寬度,所以我註釋掉「寬度」的變化:
來源
2016-08-08 22:06:25 gus
是的,它會工作,但我會從我的經驗告訴你,黑客入侵第三方庫是未來保持和升級的屁股。您也可能會引入一些不明確的錯誤,這些錯誤會影響其他鬆散相關的代碼,使其成爲追蹤和修補/修復/破解的噩夢。 – codenamezero 2016-08-10 12:38:17
相關問題