- 浏览: 111003 次
- 性别:
- 来自: 北京
最新评论
-
adidaskebi123:
不错,最近小弟正在接触部署方面的东西
capistrano 部署rails -
kfw5313:
呵呵 路过 我孔繁伟
e-texteditor 与cygwin 开发rails -
lgn21st:
这个用的是Prototype,有时切图时CPU占用率较高,比较 ...
ramgick 剪切用户头像 -
chinapkw:
难道我的权限还不够,不能上传附件,晕掉。。
你在网上找一下C ...
ramgick 剪切用户头像 -
qianjigui:
加问一句,那个view需要些什么代码?谢谢!
ramgick 剪切用户头像
xml 代码
- Drag and Drop and Sortable Elements
- 两种不同的drag-and-drop行为模式:在同一列中移动、在两列之间移动。两种不同的drag-and-drop行为模式:在同一列中移动、在两列之间移动。 无论是那一种,你必须能够指明三种型态的actors :无论是那一种,你必须能够指明三种型态的actors :
- 原本的容器。原本的容器。
- 目的地容器。目的地容器。 (当是在同一个容器中移动时,两个是相同的) (当是在同一个容器中移动时,两个是相同的)
- 能被移动的物件。能被移动的物件。
- 另外,你需要指明行为模式:另外,你需要指明行为模式:
- 当物件被拉时,要做什麽?当物件被拉时,要做什么?
- 当物件被放下时,要做什麽?当物件被放下时,要做什么?
- 当移动完成时,要传送什麽讯息给server ?当移动完成时,要传送什么讯息给server ?
- 我们利用一个待办事项的范例来说明在两个container之间的移动。我们利用一个待办事项的范例来说明在两个container之间的移动。
- 首先是view的部份:首先是view的部份:
- drag_demo.rhtml
- <h2>待办事项</h2> <h2>待办事项</h2>
- <div id='pending_todos'> <div id='pending_todos'>
- <%= render :partial=>'pending_todos' %> <%= render :partial=>'pending_todos' %>
- </div>
- <h2>已完成事项</h2> <h2>已完成事项</h2>
- <div id='completed_todos'> <div id='completed_todos'>
- <%= render :partial=>'completed_todos' %> <%= render :partial=>'completed_todos' %>
- </div>
- 在每一个<div>中我们都有指定id这个属性,这样我们才可以将行为与目标繫结在一起。在每一个<div>中我们都有指定id这个属性,这样我们才可以将行为与目标系结在一起。 而在<div>中都是一个partial 。而在<div>中都是一个partial 。 这些partial中的内容都是<ul>与<ul>的id 。这些partial中的内容都是<ul>与<ul>的id 。
- _p ending _ todos.rhtml
- <ul id='pending_todo_list'> <ul id='pending_todo_list'>
- <% @pending_todos.each do |item| %> <% @pending_todos.each do |item| %>
- <% domid = 'todo_#{item.id}' %> <% domid = 'todo_#{item.id}' %>
- <li class='pending_todo' id='<%=domid%>'><%= item.name %> </li> <li class='pending_todo' id='<%=domid%>'><%= item.name %> </li>
- <%= draggable_element(domid, :ghosting=>true, :revert=>true) %> <%= draggable_element(domid, :ghosting=>true, :revert=>true) %>
- <% end %> <% end %>
- </ul>
- 在上面的partial中建立了一个<ul>与数个<li> 。在上面的partial中建立了一个<ul>与数个<li> 。 每一个<li>都有一个独立的id ,与相同的class 。每一个<li>都有一个独立的id ,与相同的class 。 而每一个<li>也都有一个drag-and-drop helper : draggable_element 。而每一个<li>也都有一个drag-and-drop helper : draggable_element 。 这个helper需要这个可被拖曳的物件的id ,以及几个选项:这个helper需要这个可被拖曳的物件的id ,以及几个选项:
- :ghosting => true/false #当true ,表示物件在被拖曳时,呈现50%的不透明, # false表示100%的不透明。 :ghosting => true/false #当true ,表示物件在被拖曳时,呈现50%的不透明, # false表示100%的不透明。
- :revert => true/false #当true ,表示物件被移动后,会先移回原位,然后再消失。 :revert => true/false #当true ,表示物件被移动后,会先移回原位,然后再消失。
- # false ,表示物件会直接消失。 # false ,表示物件会直接消失。
- 我们会到主页,我们要标示两个容器,让物件可以被放置(drop) 。我们会到主页,我们要标示两个容器,让物件可以被放置(drop) 。 我们将使用drop_receiving_element helper 。我们将使用drop_receiving_element helper 。
- drag_demo.rhtml
- <%=drop_receiving_element('pending_todos'
- :accept => 'completed_todo' :accept => 'completed_todo'
- :complete => “$('spinner').hide();” :complete => “$('spinner').hide();”
- :before => “$('spinner').show();” :before => “$('spinner').show();”
- :hoverclass => “hover', :hoverclass => “hover',
- :with => “'todotodo=' + encodeURIComponent(element.id.split('_').last())”, :with => “'todo=' + encodeURIComponent(element.id.split('_').last())”,
- :url => {:action=>:todo_pending, :id=>@user})%> :url => {:action=>:todo_pending, :id=>@user})%>
- <%=drop_receiving_element('completed_todos'
- :accept => 'pending_todo' :accept => 'pending_todo'
- :complete => “$('spinner').hide();” :complete => “$('spinner').hide();”
- :before => “$('spinner').show();” :before => “$('spinner').show();”
- :hoverclass => “hover', :hoverclass => “hover',
- :with => “'todotodo=' + encodeURIComponent(element.id.split('_').last())”, :with => “'todo=' + encodeURIComponent(element.id.split('_').last())”,
- :url => {:action=>:todo_completed, :id=>@user})%> :url => {:action=>:todo_completed, :id=>@user})%>
- 这个helper定义一个目标DOM element来容纳物件,以及定义在d&d的event行为模式。这个helper定义一个目标DOM element来容纳物件,以及定义在d&d的event行为模式。 除了定义接受方的id外,还有下列的选项:除了定义接受方的id外,还有下列的选项:
- :accept=> string #可以被放入的物件的CSS class名称。 :accept=> string #可以被放入的物件的CSS class名称。
- :before=>snippet #在与server端沟通前,要执行的JS 。 :before=>snippet #在与server端沟通前,要执行的JS 。
- :complete=>snippet #在与server端沟通完成后,要执行的JS 。 :complete=>snippet #在与server端沟通完成后,要执行的JS 。
- :hoverclass=>string #当滑鼠到一个可被移动的物件上时(hover ),外观的CSS class定义。 :hoverclass=>string #当滑鼠到一个可被移动的物件上时(hover ),外观的CSS class定义。
- :with=>snippet #建立要传送给server的parameter的JS 。 :with=>snippet #建立要传送给server的parameter的JS 。
- :url=>url
- :update=>string #在完成XHR call后,要修改的DOM element 。 :update=>string #在完成XHR call后,要修改的DOM element 。
- 在我们的例子中,两个container中的物件可以互相移动,而Drag-and-Drop的目的就是让被容纳的物件可以可以重新分类。在我们的例子中,两个container中的物件可以互相移动,而Drag-and-Drop的目的就是让被容纳的物件可以可以重新分类。 所以我们希望XHR request是在物件放置到另一个container的时候才触发,而不是在原本的container中也会触发。所以我们希望XHR request是在物件放置到另一个container的时候才触发,而不是在原本的container中也会触发。 在draggable_element helper中我们指明revert属性,如果物件被移到其他不是可接受的container时,他会回到原位,而不会触发任何的XHR 。在draggable_element helper中我们指明revert属性,如果物件被移到其他不是可接受的container时,他会回到原位,而不会触发任何的XHR 。
- 我们利用draggable item的DOM id ,来撷取这个物件的database id 。我们利用draggable item的DOM id ,来撷取这个物件的database id 。 这个with属性拥有一段JS code ,我们会给这段JS code一个DOM element ,就是我们拖曳的那个物件,并统一给这个物件一个变数名称为element 。这个with属性拥有一段JS code ,我们会给这段JS code一个DOM element ,就是我们拖曳的那个物件,并统一给这个物件一个变数名称为element 。 在我们的例子中,可拖曳的物件我们定义他的DOM id是todo_database id ,所以当我们要传讯息给server时,我们就去掉todo_ ,只传database id 。在我们的例子中,可拖曳的物件我们定义他的DOM id是todo_database id ,所以当我们要传讯息给server时,我们就去掉todo_ ,只传database id 。
- 在主页中,我们也定义了一些CSS ,来定义container与被拖曳物件的外型。在主页中,我们也定义了一些CSS ,来定义container与被拖曳物件的外型。
- drag_demo.rhtml
- <style>
- .hover { .hover {
- background-color: #888888; background-color: #888888;
- }
- #pending_todos ul, li, #completed_todos ul li { #pending_todos ul, li, #completed_todos ul li {
- list-style: none; list-style: none;
- cursor: -moz-grab; cursor: -moz-grab;
- }
- #pending_todos, #completed_todos{ #pending_todos, #completed_todos{
- border: 1px solid gray; border: 1px solid gray;
- }
- </style>
- 当滑鼠在可被拖曳的物件上时,会套用hover class ,让物件被highlight 。当滑鼠在可被拖曳的物件上时,会套用hover class ,让物件被highlight 。 而第二个class是定义当滑鼠在container中的li element时(就是可被拖曳的元件啦),滑鼠指标会使用-moz-grab这个造型,就是手抓的造型。而第二个class是定义当滑鼠在container中的li element时(就是可被拖曳的元件啦),滑鼠指标会使用-moz-grab这个造型,就是手抓的造型。 最后一个class只是定义container的造型。最后一个class只是定义container的造型。
- 如果你想要建立一个可排序的列表,让你在一个container中,只是改变内部物件的排列顺序,并通知server他们的顺序。如果你想要建立一个可排序的列表,让你在一个container中,只是改变内部物件的排列顺序,并通知server他们的顺序。 要建立这样的功能,你只需要建立一个Html的list ,并且指明当顺序改变时,该如何做。要建立这样的功能,你只需要建立一个Html的list ,并且指明当顺序改变时,该如何做。 剩下的, Helper会帮你完成。剩下的, Helper会帮你完成。
- <ul id='priority_todos'> <ul id='priority_todos'>
- <% for todo in @todos %> <% for todo in @todos %>
- <li id='todo_<%= todo.id %>'> <%= todo.name %> </li> <li id='todo_<%= todo.id %>'> <%= todo.name %> </li>
- <% end %> <% end %>
- </ul>
- <%= sortable_element 'priority_todos'', url=>{:action => 'sort_todos'} %> <%= sortable_element 'priority_todos'', url=>{:action => 'sort_todos'} %>
- 这个sortable_element Helper可以使用所有的Prototype的选项。这个sortable_element Helper可以使用所有的Prototype的选项。
- Script.aculo.us提供一个JS方法,称为Sortable.serialize 。 Script.aculo.us提供一个JS方法,称为Sortable.serialize 。 他会取得一个list ,并传回一个JSON ,其中会有一个目前内容物件的顺序的id列表,回传给server 。他会取得一个list ,并传回一个JSON ,其中会有一个目前内容物件的顺序的id列表,回传给server 。 这个id不是DOM element的id喔,他会脱去第一个underscore('_') ,然后传回后面的字串。这个id不是DOM element的id喔,他会脱去第一个underscore('_') ,然后传回后面的字串。 在我们的例子中,就会传回database id 。在我们的例子中,就会传回database id 。 可是这样会有一个问题,如果我们的DOM id是priority_todo_id时,他就会回传todo_id ,如果要解决这个问题,你可以利用:format这个选项,自己撰写regular expression 。可是这样会有一个问题,如果我们的DOM id是priority_todo_id时,他就会回传todo_id ,如果要解决这个问题,你可以利用:format这个选项,自己撰写regular expression 。 此外,你还有一些选项可以选择:此外,你还有一些选项可以选择:
- :constraint => value #你可以选择拖曳的方向是水平(:horizontal)或垂直(:vertical) 。 :constraint => value #你可以选择拖曳的方向是水平(:horizontal)或垂直(:vertical) 。
- :overlap=>value #计算可拖曳物件在水平或垂直方向的重叠。 :overlap=>value #计算可拖曳物件在水平或垂直方向的重迭。
- :tag=> string #在container中的什麽element可以被排序(预设是li) 。 :tag=> string #在container中的什么element可以被排序(预设是li) 。
- :containment=>target #将每个或一组element当作container ,预设是原来的container 。 :containment=>target #将每个或一组element当作container ,预设是原来的container 。
- :only=>string #一个或一组CSS class名称,过滤可拖曳物件。 :only=>string #一个或一组CSS class名称,过滤可拖曳物件。
- :scroll=>boolean #当可拖曳的物件数量多时,在拖曳物件时,要不要出现scroll bar 。 :scroll=>boolean #当可拖曳的物件数量多时,在拖曳物件时,要不要出现scroll bar 。
- :tree=>boolean #是否要使用树状列表,这表示你可以建立多层次的列表,然后在不同层之间拖曳。 :tree=>boolean #是否要使用树状列表,这表示你可以建立多层次的列表,然后在不同层之间拖曳。
发表评论
-
ramgick 剪切用户头像
2008-06-27 16:27 1700以前在别的论坛,或网站。上传头像时。总是不是很好,有的直接缩略 ... -
railslogVisualizer and Ruby on Windows Mobile 5
2008-06-17 11:16 1123可视化的rails log分析工具,在网上找了一些都是很老的版 ... -
CommunityEngine plugin for ruby
2008-06-13 16:09 1409http://missingmethod.brunoborns ... -
typo rails 的开源 blog
2008-06-12 13:28 2095小巧精致。 https://rubyforge.org ... -
e-texteditor 与cygwin 开发rails
2008-06-03 17:31 3091用netbeans 开发rails 有一年时间了。受禁了折磨。 ... -
rails2.0 安装beast
2008-06-03 00:29 2265今天想安装一下beast看看.毕竟用rails 这么久了. 本 ... -
可拖拽,保存展开收起状态的个人主页
2008-01-12 11:57 2601<li id="my_list_b" ... -
安装rails2.0
2007-12-19 00:19 1899rails 2.0 终于发布了。呵 装上试一下新功能。gem ... -
cache_count
2007-11-21 14:31 1293ruby 代码 #thingsuser.rb ... -
rails 常用文件操作
2007-11-20 13:40 47require 'mockfs' ... -
ruby jmaki on netbeans
2007-11-09 12:15 1264jMaki是SUN支持的一个AJAX框架。这个 ... -
freeze gems
2007-11-07 12:02 1135rake rails:freeze:gems表示把当前Gems ... -
rss
2007-10-09 10:44 1402通过BAIDU的快照看到这个文章的,原文章地址已经打不开了,只 ... -
rails 生成rss
2007-09-26 17:07 1980原文:http://xerdoc.com/blog ... -
rake
2007-09-21 14:56 1327转自:http://blog.csdn.net/s ... -
db:migrate简明指南
2007-08-06 17:14 3443首先,确保你已经配置好了database.yml,假设我们要创 ... -
write a plugin for rails
2007-08-06 14:14 1542A few days back I posted my ver ... -
swfupload 上传文件,带进度条 ruby on rails 应用
2007-08-03 10:45 4838公司的相册想要做上传文件的方案。本来用file_column ... -
capistrano 部署rails
2007-07-18 18:04 11734转自石锅拌饭,察 ... -
rails实现验证码
2007-07-07 16:09 14401.在windows上安装Rmagic,如果你是通过gem ...
相关推荐
"Java中的Drag and Drop拖拽技术" Java中的Drag and Drop拖拽技术是指在Java应用程序中,实现拖拽操作的技术。Drag and Drop技术可以将数据从一个组件拖拽到另一个组件中,实现数据的传输和交互操作。 Drag and ...
在Android开发中,拖放(Drag and Drop)功能是一种常见的用户交互方式,允许用户通过手势将一个对象从一处移动到另一处。这个功能在许多场景下都非常实用,比如整理应用抽屉、移动文件或者在布局中调整控件位置等。...
在Android开发中,拖放(DragAndDrop)功能是一个常用且有趣的交互方式,它允许用户通过手势将一个视图移动到另一个位置,或者在不同的视图之间传递数据。本示例将详细介绍如何实现一个简单的拖放操作,并解决你在...
本资料"DragandDrop.rar_dragAndDrop"聚焦于在Internet Explorer(IE)浏览器中实现文件拖放的扩展功能,为开发者提供了宝贵的指导。 文件拖放技术的核心在于HTML5中的Drag and Drop API,这是一个强大的功能,使得...
《Drag and Drop Component Suite 3.7:Delphi中的拖放技术详解》 在软件开发过程中,用户界面的易用性和交互性是至关重要的因素之一。"Drag and Drop Component Suite 3.7"是一个专为Delphi开发者设计的组件包,它...
【标题】"DragAndDrop_Demo源码"是关于C++编程的一个实例,主要展示了拖放(Drag and Drop)功能的实现。在计算机图形用户界面(GUI)开发中,拖放功能允许用户通过鼠标或其他输入设备将一个对象从一处拖动到另一处...
在C#编程中,Drag and Drop操作是一种常见且实用的功能,允许用户通过鼠标将对象从一个位置拖动到另一个位置,比如在不同的控件、窗口甚至应用程序之间移动数据。这个功能在开发桌面应用时,特别是在文件管理或者...
表格拖拽排序插件 Table Drag and Drop JQuery plugin v0.7 最新0.7版本
"Drag and Drop Component Suite Version 5.2 Full Source" 是一个专门用于开发具有拖放功能的组件套件的完整源代码版本。这个组件库通常是为了帮助程序员在应用程序中实现更直观、用户友好的交互设计而设计的。在这...
"DragAndDrop_src源码" 是一个专门针对C++编程语言设计的项目,它提供了实现拖放(Drag and Drop)功能的源代码。在Windows应用开发中,拖放操作是常见的用户交互方式,允许用户通过鼠标将一项内容从一处拖动到另一...
在Windows Presentation Foundation (WPF) 中,鼠标拖放操作(DragAndDrop)是一种常见的用户交互方式,它允许用户通过鼠标将一个元素从一处移动到另一处。这种功能在各种应用程序中都有广泛的应用,例如文件管理器...
本文将详细介绍Drag and Drop API的基本概念、事件处理、以及如何在JavaScript中使用这个API来实现拖拽功能。 Drag and Drop API为Web应用带来了强大的交互性。通过本文的介绍和示例代码,开发者应该能够理解并实现...
Vue DnD Mobile,全称为"Vue Drag and Drop Mobile",是专门为Vue.js开发的一个拖放库,专为移动设备优化,使得在触摸屏上的交互变得更加自然和流畅。 拖放(Drag and Drop,简称DnD)是一种常见的用户交互模式,...
标题 "Ole Drag and Drop Example" 提供了一个关于如何在应用程序中实现OLE拖放操作的示例。在编程中,OLE(Object Linking and Embedding)是微软开发的一种技术,允许不同应用程序之间的数据共享和交互。拖放功能...
对于Delphi开发者来说,"The Drag and Drop Component Suite for Delphi XE10"是一款非常实用的工具,它极大地简化了在Delphi XE10环境下实现拖放功能的复杂度。 该组件套件是基于先前版本XE7的修改版,经过优化后...
Shell Drag and Drop for .NET 是一个专为.NET框架设计的组件,它允许开发者在Windows应用程序中实现更加丰富和直观的拖放操作。这个组件的独特之处在于它能够在拖放过程中显示一个图片来呈现拖动的轨迹,提升了用户...
在iOS 11中,Apple引入了一项名为“Drag and Drop”的强大功能,极大地提升了用户在设备上处理和移动内容的便捷性。这个功能允许用户通过简单的手势将内容(如文本、图片、文件等)从一个应用拖动到另一个应用,从而...
本篇文章将深入探讨如何使用jQuery实现拖放(Drag and Drop)功能,特别是针对图片的拖放操作。拖放功能是网页交互中常见的一种增强用户体验的方式,常用于文件上传、页面元素排序等场景。 首先,我们需要引入jQuery...
【标题】:“拖拽 Draganddrop.html” 在Web开发中,拖放(Drag and Drop)功能是一项常用的技术,允许用户通过鼠标操作将元素从一处拖动到另一处,实现数据移动或交互。在这个实例中,“Draganddrop.html”很可能...
HTML5是现代网页开发的重要标准,它引入了许多新特性,其中拖放(Drag and Drop)功能就是一项增强用户交互体验的重要接口。拖放接口允许用户通过鼠标或触控设备将元素从一个位置拖动到另一个位置,使得网页的互动性...