【jQuery基础编程】jQuery-UI实现折叠面板里的控件拖曳

因一个项目的需要,需要在前端界面实现在折叠面板里拖曳控件到工作区的功能(类似于Android和MFC的可视化界面开发),于是就开始学起了强大的jQuery,发现里面的jQuery-UI有折叠面板、按钮等控件,但当在折叠面板里拖曳按钮时,按钮的拖曳范围只能是折叠面板内部,不能拖到工作区。所以这里绕了个弯实现了一下:

主要的实现过程是:首先在控件表明生成一个副本,每次拖曳控件的时候拖曳的都是副本,当拖曳完成,即鼠标弹起后,原控件表面就又生成一个副本待下次拖曳。(其他一些细节写在了注释里.)

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>从折叠面板里拖曳元素</title>
<script src="../jquery/jquery-1.11.2.min.js"></script>
<script src="../jquery/jquery-ui.min.js"></script>
<link href="../jquery/jquery-ui.min.css" rel="stylesheet"></link>
<style>

#accordion{
    width:20em;
}

.accordion-button{
    width:auto;
    height:auto;
    margin-left:1em;
}

.graggable{
}

</style>
</head>
<body>

<div id="accordion">
<h3><a href="#">按钮</a></h3>
<div>
<button id="button1" class="accordion-button">Button1</button>
<button id="button2" class="accordion-button">Button2</button>
</div>
</div>

</body>
</html>

<script>
//元素事件
//change,click,dblclick,error,focus,focusin,focusout,keydown,keypress,keyup,
//mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,resize,scroll,select,submit,unload

$("#button1").button();
$("#button2").button();
$("#accordion").accordion();

//将button2变为可拖曳元素,可测试出它只能在折叠面板内部拖动
$("#button2").draggable(
{cancel:".title"});

//先在Button1上生成一个待拖曳控件
addElement($("#button1"));

//新增一个x控件
function addElement(x){
    //在现有控件之上生成一个新控件
    var classAttr = "accordion-button graggable";
    //获取元素内容
    var text = x.text();
    //元素CSS样式,主要是设置位置与原有元素相同
    var styleAttr = ‘style="position: absolute;top:‘+
                    x.position().top +‘px;left:‘+
                    x.position().left+‘px;"‘;
    //设置元素
    $elem = ‘<button ‘+styleAttr+‘class="‘+classAttr+‘ " role="button">‘+
            ‘‘+text+‘</button>‘;
    $(‘body‘).append($elem); //添加元素
    $(".graggable").button();  //设置元素
    $(".graggable").draggable({cancel:".title"});//设置元素可拖曳
    //给所有控件注册鼠标弹起事件,每弹起一次,就生成一个新的当前控件
    $(".graggable").on("mouseup",function(){
        addElement(x);
    })

}

</script>

实现效果:

时间: 2024-10-12 13:18:19

【jQuery基础编程】jQuery-UI实现折叠面板里的控件拖曳的相关文章

jQuery-UI实现折叠面板里的控件拖曳

因一个项目的需要,需要在前端界面实现在折叠面板里拖曳控件到工作区的功能(类似于Android和MFC的可视化界面开发),于是就开始学起了强大的jQuery,发现里面的jQuery-UI有折叠面板.按钮等控件,但当在折叠面板里拖曳按钮时,按钮的拖曳范围只能是折叠面板内部,不能拖到工作区.所以这里绕了个弯实现了一下: 主要的实现过程是:首先在控件表明生成一个副本,每次拖曳控件的时候拖曳的都是副本,当拖曳完成,即鼠标弹起后,原控件表面就又生成一个副本待下次拖曳.(其他一些细节写在了注释里.) 代码:

Jquery+json绑定带层次下拉框(select控件)

一.实现的效果图 二.主要代码 html代码 <select id="pid" runat="server"> <option value="0" data="|0|">不选父级类</option> </select> Jquery代码 var html = ['<option value="0">不选父级模块</option>'];

atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践

atitit.Atitit.  Gui控件and面板-----服务端控件 java struts的实现最佳实践 1. 服务器控件的类别 1 1.1. 数据控件:该类控件可细分为两种类型:数据源控件和数据绑定控件. 1 1.2. 站点导航控件: 1 1.3. WebParts控件: 1 1.4. 登录控件: 1 1.5. Ajax 控件 1 2. jsf 2 3. Apache  ecs 2 4. Custom ui control... 2 5. Struts UI Tags display d

Android UI之android:layout_weight属性以及控件的比例控制

这两天在做一个Android界面的时候采用了linearlayout线性布局,并在其中放置了textview控件,设置android:layout_width属性为wrap_content时,eclipse提示说这里使用0dp取代wrap_content能获得更好的体验,顿时产生了好奇,为什么使用0dp会更好?于是探究了一番,网上已有相关的文章,学习之后作了一个总结. 首先解释一下Android:layout_weight属性的作用,其实简单理解就是用来分配空间大小,至于怎么分配,分配的是哪些空

我教女朋友学编程Html系列(6)—Html常用表单控件

做过网页的人都知道,html表单控件十分重要.基本上我们注册会员.登录用户,都需要填写用户名.密码,那些框框都是表单控件. 本来今天就想写一些常用的html表单控件,于是开始搜资料,找到了一个网页,作者的写作思路和我的基本相同,不过不足的是缺少效果图. 我打算结合着这位仁兄的文章补充一下,增加一些效果图,另外把一些新内容也补充进去,原文的地址是: HTML表单(Forms) 我站在这位仁兄的肩膀上写作,再增加一些东西,配上一些图,我想,效果应该很好,接着就跟着我来学习吧. HTML表单(Form

ADO面板上的控件简介

ADO面板上的控件简介 一. TADOConnection组件该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等.该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其ConnectionString属性,可以直接连接到数据库.但是如果多个数据集使用相同的数据库连接时,则使用TADOConnection就有一定的优势,因为不必为每个数据集都单独建立数据库的连接,同时也减少了资源的消耗

Delphi7 ADO面板上的控件简介

Delphi7 ADO面板上的控件简介 一. TADO Connection组件 该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等. 该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其Connection String属性,可以直接连接到数据库.但是如果多个数据集使用相同的数据库连接时,则使用TADO Connection就有一定的优势,因为不必为每个数据集都单独建立数据库的连

WPF编程,通过【帧】动态更改控件属性的一种方法。

原文:WPF编程,通过[帧]动态更改控件属性的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87249998 WPF提供了一种基于帧的动画实现方式,由CompositionTarget类来完成. WPF会在每次界面刷新时调用该回调函数. CompositionTarget的刷新率与窗体保持一致,因此很难人工控制动画的快慢. ?1.前台 <Grid> <Grid.RowDefin

jquery ui dialog 内部使用asp.net控件

dialog中只要加上 appendTo:"form", 就能解决后端无法获取asp.net控件的值,同时解决了 modal: true, 启动模式对话框时无法操作对话框. jquery ui dialog代码: $(document).ready(function() { $( "#dialog" ).dialog({ autoOpen: true, appendTo:"form", height: 250, width: 300, modal