jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

  这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想。

  一、resizable使用注意事项

  以下是我在jsfiddle上写的测试demo:http://jsfiddle.net/pLuymmp1

  

1 <div class="J_outer outer">
2     <div class="J_inner inner"></div>
3 </div>

html

1 .outer{width:100px;border:2px solid blue;}
2 .inner{width:50px;height:50px;border:2px solid green;margin:0 auto;}

css

 1 $(".J_outer").resizable({
 2     handles:"e"
 3 });
 4 $(".J_inner").resizable({
 5     handles:"e"
 6 });
 7
 8 $(".J_outer").resizable("destroy");//解绑.J_outer的resizable
 9 $(".J_outer").resizable({
10     handles:"e"
11 });
12
13 $(".J_inner").resizable("destroy");//解绑.J_inner的resizable
14 $(".J_inner").resizable({
15     handles:"e"
16 });

js

  两个父子关系的div,对其绑定resizable和解绑,都是有次序之分的,否则会导致意外的结果发生  

  1. 正确的绑定顺序:要先绑定父级的resizable方法,再绑定其子级的resizable方法

  如果是,先绑定子级、再绑定父级,测试结果是:

    子级和父级都绑定上了操作手柄,但是父级div的操作手柄无法响应拖拽事件,子级可以。

    

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

  

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

  

  4.解绑子级的resizable,再重绑,子级和父级均可正常响应拖拽

  5.解绑父级的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后无法进行重新设置

  解决方法:

  修复代码:  

1 var oldSetOption = $.ui.resizable.prototype._setOption;
2 $.ui.resizable.prototype._setOption = function(key, value) {
3     oldSetOption.apply(this, arguments);
4     if (key === "aspectRatio") {
5         this._aspectRatio = !!value;
6     }
7 };    

  这样就可以进行实时切换等比例和非等比例拉伸了,顺便贴一下我的等比例拉伸实现代码:

  

//用于识别是否按等比例调整大小
$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");
});
1 start:function(event,ui){
2 //判断是否按等比例进行调整
3     if($(this).attr("aspectRatio") == "1"){
4         $(this).resizable("option", "aspectRatio", true);
5     }else{
6         $(this).resizable("option", "aspectRatio", false);
7     }
8 }

  

  

  

时间: 2024-10-03 22:53:43

jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧的相关文章

JQuery UI - resizable调整区域大小

JQuery UI - resizable ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable/ 所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象 ui.helper - 表示当前被改变尺寸的元素的JQuery对象 ui.originalPosition - 表示未改变尺寸之前元素的位置{top,left} ui.originalSize - 表示

Three steps to use jQuery UI in ASP.NET MVC 5

Many developers struggle to work with jQuery UI in an ASP.NET MVC application. In this post, I will show you three steps required to start working withjQuery UI in an ASP.NET MVC application. At the end of the post we will take a look at working with

Asp.Net MVC4开发三:HTML5、CSS3、JQuery、JQuery UI的应用

在Asp.Net MVC4里面UI层也就是View层默认使用HTML5以及与HTML相对应的CSS3,JS默认使用JQuery和JQuery UI.新建一个MVC4项目,项目会自动包含JQuery.JQuery UI所需要的文件及智能提示支持; HTML则是自动生成HTML5格式标签的页面. 先来看看MVC4项目里面对这些内容的支持: 在MVC4项目里面有Scripts和Content两个文件夹,Scripts里面存放Java scripts库包括JQuery, JQuery UI, JQuer

jQuery UI draggable+droppable+resizable+selectable+sortable

<script language="JavaScript" type="text/javascript" src="ui/jquery-1.8.2.js"></script> <script language="JavaScript" type="text/javascript" src="ui/jquery-ui-1.9.1.custom.js">&

jQuery UI

1.jQuery UI: 是以jQuery为基础的JavaScript网页用户界面的开源库.包含底层用户交互.动画.特效和可更换主题的可视控件.我们可以直接用它来构建具有很好交互性的web应用程序.2.jQuery UI : 包含了许多维持状态的小部件(Widget),因此,他与定性的jQuery插件使用模式略有不同.所有的jQuery UI 小部件(Widget)使用相同的模式,所以,只要学会使用其中一个,就知道如何使用其他小部件(Widget).3.jQuery UI: IE 6.0+ ,

通过扩展jQuery UI Widget Factory实现手动调整Accordion高度

□ 实现Accordion高度一致 <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <link href="~/Content/jquery-ui.min.css" rel="stylesheet" /> <script src="~/S

jQuery UI 知识点

jQuery UI  是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库.包含底层用户交互.动画.特效和可更换主题的可视控件.我们可以直接用它来构建具有很好交互性的web应用程序.所有插件测试能兼容IE 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+, 和GoogleChrome. jQuery UI  包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(

jquery ui 笔记

准备: 1.下载jquery ui库:http://jqueryui.com/download/ 2.选择theme 3.建立一个良好的发展环境(mysql.netbeans) 4.创建数据库:jqueryui_db 一.jquery ui 1.autocomplete 1.1.描写叙述:是jQuery UI的自己主动完毕组件. 1.2.支持的数据源:主要支持字符串Array.JSON两种数据格式. 1.2.1.对于JSON格式的Array,则要求有:label.value属性. 1.2.2.当

OpenLayers学习笔记5——使用jQuery UI实现查询并标注(UI篇)

最近事情很多,老板给的压力也很大,经常出差,另外项目和个人研究还都要跟上,本月要交论文,还要写专利,只能抽时间来学习其他的东西了.关于OpenLayers的在博客中不会写太多具体的实现(网上有很多openlayers的博客,关于加载wms.标记.量测的,我这里就不再重复了),只是记录自己的开发学习经验和一些需要注意的问题,真正做开发的都知道,要想学好开发只能通过自己默默的多磨..关于WW的学习和开发已经搁置了好久了,等过去这段时间,打算好好学一下jogl,争取做一些粒子模拟出来,另外打算采用rc