这篇文章总结的是我在使用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. .net core快速上手

    2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...

  2. 通俗易懂的来讲讲DOM

    DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...

  3. 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...

  4. .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...

  5. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  7. 在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错

    在知乎上看到这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错,所以推荐给大家,非常值得一读. 作者:Ovear链接:https://www.zhihu.com/que ...

  8. [systemtap手记]debian体系安装过程

    Debian体系,本人测试用机 Ubuntu 11.10 uname -r 查看原本的内核版本为 3.0.0-12-generic 第一步: 安装systemtap包 $ sudo apt-get i ...

  9. go语言:多个[]byte数组合并成一个[]byte

    场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...

  10. AFNetworking图片上传

    //上传图片 -(void)upLoadImage:(UIImage *)upImage { //创建管理 AFHTTPRequestOperationManager *manager = [AFHT ...