+ -
当前位置:首页 → 问答吧 → 请教jQuery+jQuery UI的3个问题

请教jQuery+jQuery UI的3个问题

时间:2009-04-25

来源:互联网

详细源码可以查看这个网址,我只列出我想问的:
http://www.keakon.cn/ocg/

一个疑问是jQuery对象如何在参数的匿名函数中获取自身。
例如
复制代码
  1.       var container1 = $("#container1");
  2.       container1.droppable({
  3.         over: function(ev, ui) {container1.addClass("over");}
  4.         }
  5.       });
  6.       var container2 = $("#container2");
  7.       container2.droppable({
  8.         over: function(ev, ui) {container2.addClass("over");}
  9.         }
  10.       });
这个over函数内部的container1和container2有办法直接拿到吗,这样我就可以不用写多次(实际上我需要20多个container,这样写会疯掉),而只用一个class选择器就行了:
复制代码
  1.       $(".container").droppable({
  2.         over: function(ev, ui) {这个对象该怎么写.addClass("over");}
  3.         }
  4.       });
我试过$(this),但不可用=。=
此外还有个drop函数,它是个嵌套的匿名函数,这个的获取我就更搞不清了…


另一个是z-index的疑问,我设置了$(".poker").draggable({zIndex: 2})。这个拖动的卡片在Chrome下正常,但是在IE6下,一旦拖放到左边的div里,再拖到右边的div时,就会被挡住,这个属于bug吗?
我确定不是设置的值太小了,设成100、1000照样被挡。


还有一个是拖动的效果。
revert: 'invalid'可以让被拖动的对象慢慢回去,但我拖放到一个container上时,使用的是item.appendTo(container1),于是它便立刻到容器里了,能否给这个也弄个动画效果呢?
我尝试过animate,可是不太清楚怎么用…


先谢谢大家的解答!

作者: keakon   发布时间: 2009-04-25

第一个问题$(this)就可以
嵌套的话先定义一个var outer = $(this);
然后在嵌套方法里面使用outer就可以

作者: gordianyuan   发布时间: 2009-04-27

引用
引用第1楼gordianyuan于2009-04-27 10:10发表的  :
第一个问题$(this)就可以
嵌套的话先定义一个var outer = $(this);
然后在嵌套方法里面使用outer就可以
谢谢,over和out是可以这样解决的,但drop却没办法。

在Chrome下是正常的,但是IE6会报“尚未实现”的错误:
复制代码
  1.       var container1 = $("#container1");
  2.       container1.droppable({
  3.         accept: '.poker',
  4.         over: function(ev, ui) {$(this).addClass("over");},
  5.         out: function(ev, ui) {$(this).removeClass("over");},
  6.         drop: function(ev, ui) {
  7.           self = $(this); //这里会报错
  8.           (function (item) {
  9.             item.appendTo(self);
  10.           })(ui.draggable);
  11.         }
  12.       });

作者: keakon   发布时间: 2009-04-27

终于懂了,那处完全没必要用匿名函数…直接这样就行了:
复制代码
  1.       $(".container").droppable({
  2.         accept: '.card',
  3.         over: function(ev, ui) {$(this).addClass("over");},
  4.         out: function(ev, ui) {$(this).removeClass("over");},
  5.         drop: function(ev, ui) {ui.draggable.appendTo($(this))}
  6.       });
然后就是剩下的2个问题了,继续请教

作者: keakon   发布时间: 2009-04-28

z-index也知道了,简单来说就是不支持IE6…

反正不设position就正常=。=

作者: keakon   发布时间: 2009-04-28

相关阅读 更多

热门下载

更多