如何将JQuery“this”选择器作为参数传递

时间:2010-10-27 13:37:51

标签: jquery

对于一个类,我必须使用CSS,HTML 4.01和Javascript与JQuery库创建一个拖放界面;没有插件允许。我认为这样做的最好方法是aler我应该在mousedown然后在mouseup上拖动div的CSS位置

 $(document).ready(function(){
    $(".draggable").mousedown(Dragging(this));
    function Dragging(draggableObject)
    {
        draggableObject.live("mousemove", function(){draggableObject.css(/*alters the position of the div*/)});
    };
});

我的麻烦是draggableObject似乎没有任何CSS属性,我尝试使用其属性调用警报,显然它们是空的。传递对象或其他任何地方我做错了什么?

1 个答案:

答案 0 :(得分:1)

为什么不起作用? - 使用Dragging(this)你会立即调用该函数,而不是在绑定时运行它。此函数作为事件处理程序运行时获得的第一个参数是event object


它应该是这样的:

$(document).ready(function(){
   $(".draggable").mousedown(Dragging);
   function Dragging() {
     $(this).bind("mousemove", function(){
       $(this).css(/*alters the position of the div*/)
     });
   }
});

在事件处理程序this 已经引用该元素时,不需要传递它。你也可以这样缩短它:

$((function(){
   $(".draggable").mousedown(function () {
     $(this).mousemove(function(){
       $(this).css(/*alters the position of the div*/)
     });
   });
});

注意我们这里没有使用.live(),不适用于这种情况(并且不能在没有选择器的情况下使用),您只需要.bind()直接.mousemove()快捷方式上面也使用了.bind()