这篇文章总结的是我在使用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. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  2. Python高手之路【四】python函数装饰器

    def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...

  3. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  4. 红黑树——算法导论(15)

    1. 什么是红黑树 (1) 简介     上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...

  5. Android 自定义 attr

    好纠结,弄了一个下午老是报错如是总结一下安卓自定视图和自定义属性. (一)自定义属性 在Values文件下建立一个attrs.xml文件,attr的format可以参考:http://www.cnbl ...

  6. [C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数

    了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数 目录 简介 特点 方法的参数 方法的返回值 与批处理交互的一个示例 简介 我们知道,新建一个控制台应用程序的时候,IDE 会同时创建 ...

  7. Angular2开发笔记

    Problem 使用依赖注入应该注意些什么 服务一般用来做什么 指令一般用来做什么 angular2如何提取公共组件 angular2为什么不需要提公共组件 父组件与子组件之间如何通讯 什么时候应该使 ...

  8. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

  9. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  10. Axure 8.0.0.3312可用注册码

    用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU 用户名:axureuser 序列号:8wFfI ...