这篇文章总结的是我在使用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使用注意事项、实时等比例拉伸及你不知道的技巧的更多相关文章

  1. JQuery UI - resizable调整区域大小

    JQuery UI - resizable   ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable ...

  2. 解决 jQuery.UI.Resizable aspectRatio在init后无法重新设置

    一.背景  在jQuery1.9.x版本之前,存在aspectRatio在Resizable方法init之后,无法再次修改aspectRatio的boolean值. 二.解决方案 // 用于fix j ...

  3. JQuery UI - resizable

     ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable/ 所有的事件回调函数都有两个参数:eve ...

  4. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件

    习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...

  5. jquery ui的css设计

    jquery ui 是当前最强大的UI库之一,其两大卖点是对IE6的良好支持与换肤功能.为了构建avalon ui,今天起我将投入一部分精力来研究时下最流行的几个CSS框架.它是首当其冲. jquer ...

  6. jquery ui 怎么实现tab标签切换效果

    1.效果图 2.HTML 代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...

  7. jQuery UI与jQuery easyUI的冲突解决办法

    jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...

  8. Jquery UI

    jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...

  9. JQuery UI dialog 弹窗实例及参数说明

    按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...

随机推荐

  1. H5坦克大战之【建造敌人的坦克】

      公司这几天在准备新版本的上线,今天才忙里偷闲来写这篇博客.接着上一篇的"H5坦克大战之[玩家控制坦克移动2]"(http://www.cnblogs.com/zhouhuan/ ...

  2. ASP.NET Core 之 Identity 入门(三)

    前言 在上一篇文章中,我们学习了 CookieAuthentication 中间件,本篇的话主要看一下 Identity 本身. 最早2005年 ASP.NET 2.0 的时候开始, Web 应用程序 ...

  3. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  4. 利用XAG在RAC环境下实现GoldenGate自动Failover

    概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...

  5. C#异步编程(二)

    async和await结构 序 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现. BeginInvoke和End ...

  6. python笔记(持续更新)

    1.编译python遇到下面的编码问题:     SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...

  7. PHP的学习--RSA加密解密

    PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...

  8. android 两种实现计时器时分秒的实现,把时间放在你的手中~

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

  9. autocomplete的使用

    autocomplete使用分为本地调用方法和读取远程读取数据源的方法 (1)本地调用方法 <script src="Scripts/jquery-1.4.1.min.js" ...

  10. AngularJS 系列 学习笔记 目录篇

    目录: AngularJS 系列 01 - HelloWorld和数据绑定 AngularJS 系列 02 - 模块 (持续更新)