传递给jQuery中的eventhandler外部参数

时间:2015-09-11 22:29:16

标签: javascript jquery object

我尝试使用javascript对象创建一个对象来管理jquery中的拖动元素,但它不起作用。

var elementDragged = 
{   clicked :  false,
    element :  $("div"),
    mouseUp :  function() {this.clicked = false;},
    mouseDown : function() {this.clicked = true;},
    mouseMove : function(element, clicked){
                return function(event) {
                            if(clicked)
                            { 
                             element.css({left: event.pageX-element.width()/2, top: event.pageY-element.height()/2});
                            }
                            }}(this.element, this.clicked),                 
    start : function(){ this.element.on({
            mouseup: this.mouseUp,
            mousedown: this.mouseDown,
            mousemove: this.mouseMove
    })}
};

elementDragged.start();

firefox浏览器控制台并没有告诉我任何事情。 任何人都可以帮助我理解如何将所有被点击的元素和元素放入处理程序中以移除proprerty吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,但是现在它与div配合得很好,而我输入和img的问题:

var elementDragged = 
{   
clicked :  {status :  false},
element :  $("input"),              
start : function(){ this.element.on({
                mouseup: function(clicked) {
                             return  function() {clicked.status = false;}
                         }(this.clicked),

                mousedown: function(clicked) {
                             return  function() {clicked.status = true;}
                         }(this.clicked),

                mousemove: function(element, clicked){
                             return function(event) {
                                if(clicked.status)
                                { xValue = event.pageX-element.width()/2;
                                  yValue = event.pageY-element.height()/2;
                                 element.css({left: xValue, top: yValue});
                                }
                          }}(this.element, this.clicked)
    })}
};

elementDragged.start();

关于这种行为的任何想法?