jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想。
一、resizable使用注意事项
以下是我在jsfiddle上写的测试demo:http://jsfiddle.net/pLuymmp1

<div class="J_outer outer">
<div class="J_inner inner"></div>
</div>
html
.outer{width:100px;border:2px solid blue;}
.inner{width:50px;height:50px;border:2px solid green;margin:0 auto;}
css
$(".J_outer").resizable({
handles:"e"
});
$(".J_inner").resizable({
handles:"e"
});
$(".J_outer").resizable("destroy");//解绑.J_outer的resizable
$(".J_outer").resizable({
handles:"e"
});
$(".J_inner").resizable("destroy");//解绑.J_inner的resizable
$(".J_inner").resizable({
handles:"e"
});
js
两个父子关系的div,对其绑定resizable和解绑,都是有次序之分的,否则会导致意外的结果发生
1. 正确的绑定顺序:要先绑定父级的resizable方法,再绑定其子级的resizable方法
如果是,先绑定子级、再绑定父级,测试结果是:
子级和父级都绑定上了操作手柄,但是父级div的操作手柄无法响应拖拽事件,子级可以。

2.解绑父级的resizable,结果子级的resizable也被解绑

3.解绑子级的resizable,父级的正常未受影响

4.解绑子级的resizable,再重绑,子级和父级均可正常响应拖拽
5.解绑父级的resizable,再重绑,子级的resizable失效,父级的正常响应拖拽
所以,绑定的顺序应为由父到子,解绑父级的resizable,则需要对其子级进行重绑resizable。
二、操作手柄的变通妙用
首先要明白的是,resizable绑定的手柄最多只能有e,s,w,n,se,sw,ne,nw八个方向的八个手柄,每个方向有且只能有一个。
那问题来了,如果我想要在s方向有两个手柄,应该要怎么办?
我在项目中就遇到这个问题,最后是以取巧的方式做到的。具体的方法是:再添加其余七个方向中的一个,然后在create的时候,将其特有的手柄class置换为ui-resizable-s,就可以了。
demo地址:http://jsfiddle.net/q58chj0h/

当时解决这个问题,心里别提多开心,哈哈
三、resizable存在的bug
jquery.ui.resizable aspectRatio在init后无法进行重新设置
解决方法:
修复代码:
var oldSetOption = $.ui.resizable.prototype._setOption;
$.ui.resizable.prototype._setOption = function(key, value) {
oldSetOption.apply(this, arguments);
if (key === "aspectRatio") {
this._aspectRatio = !!value;
}
};
这样就可以进行实时切换等比例和非等比例拉伸了,顺便贴一下我的等比例拉伸实现代码:
//用于识别是否按等比例调整大小
$sw.mouseover(function(){
$self.attr("aspectRatio", "1");
});
$se.mouseover(function(){
$self.attr("aspectRatio", "1");
});
$ne.mouseover(function(){
$self.attr("aspectRatio", "1");
});
$nw.mouseover(function(){
$self.attr("aspectRatio", "1");
});
$n.mouseover(function(){
$self.attr("aspectRatio", "0");
});
$e.mouseover(function(){
$self.attr("aspectRatio", "0");
});
$s.mouseover(function(){
$self.attr("aspectRatio", "0");
});
$w.mouseover(function(){
$self.attr("aspectRatio", "0");
});
start:function(event,ui){
//判断是否按等比例进行调整
if($(this).attr("aspectRatio") == "1"){
$(this).resizable("option", "aspectRatio", true);
}else{
$(this).resizable("option", "aspectRatio", false);
}
}
via:cnblogs.com/walls/p/4256736.html
jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧的更多相关文章
- JQuery UI - resizable调整区域大小
JQuery UI - resizable ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable ...
- 解决 jQuery.UI.Resizable aspectRatio在init后无法重新设置
一.背景 在jQuery1.9.x版本之前,存在aspectRatio在Resizable方法init之后,无法再次修改aspectRatio的boolean值. 二.解决方案 // 用于fix j ...
- JQuery UI - resizable
·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable/ 所有的事件回调函数都有两个参数:eve ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...
- jquery ui的css设计
jquery ui 是当前最强大的UI库之一,其两大卖点是对IE6的良好支持与换肤功能.为了构建avalon ui,今天起我将投入一部分精力来研究时下最流行的几个CSS框架.它是首当其冲. jquer ...
- jquery ui 怎么实现tab标签切换效果
1.效果图 2.HTML 代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...
- jQuery UI与jQuery easyUI的冲突解决办法
jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...
- Jquery UI
jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...
- JQuery UI dialog 弹窗实例及参数说明
按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...
随机推荐
- H5坦克大战之【建造敌人的坦克】
公司这几天在准备新版本的上线,今天才忙里偷闲来写这篇博客.接着上一篇的"H5坦克大战之[玩家控制坦克移动2]"(http://www.cnblogs.com/zhouhuan/ ...
- ASP.NET Core 之 Identity 入门(三)
前言 在上一篇文章中,我们学习了 CookieAuthentication 中间件,本篇的话主要看一下 Identity 本身. 最早2005年 ASP.NET 2.0 的时候开始, Web 应用程序 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 利用XAG在RAC环境下实现GoldenGate自动Failover
概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...
- C#异步编程(二)
async和await结构 序 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现. BeginInvoke和End ...
- python笔记(持续更新)
1.编译python遇到下面的编码问题: SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...
- PHP的学习--RSA加密解密
PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
- android 两种实现计时器时分秒的实现,把时间放在你的手中~
可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...
- autocomplete的使用
autocomplete使用分为本地调用方法和读取远程读取数据源的方法 (1)本地调用方法 <script src="Scripts/jquery-1.4.1.min.js" ...
- AngularJS 系列 学习笔记 目录篇
目录: AngularJS 系列 01 - HelloWorld和数据绑定 AngularJS 系列 02 - 模块 (持续更新)