Javascript 背面元素上的事件不';jQuery中的t触发器

Javascript 背面元素上的事件不';jQuery中的t触发器,javascript,jquery,events,Javascript,Jquery,Events,好的,我有一个棋盘,上面有所有的斑点和棋子。它是从一个2D数组中用两个四个循环生成的onload。这个想法是,你应该能够拖动一个棋子(我已经正确地实现了这一点),并让它在一个有效的位置。释放部分应在实际板点触发事件。因此,64个点中的每一个都有一个类似这样的偶数侦听器 element.on("mouseup",function(e){ if(Game.current==undefined||!$(this).hasClass("valid")){return;}

好的,我有一个棋盘,上面有所有的斑点和棋子。它是从一个2D数组中用两个四个循环生成的
onload
。这个想法是,你应该能够拖动一个棋子(我已经正确地实现了这一点),并让它在一个有效的位置。释放部分应在实际板点触发事件。因此,64个点中的每一个都有一个类似这样的偶数侦听器

element.on("mouseup",function(e){
                if(Game.current==undefined||!$(this).hasClass("valid")){return;}
                var col,row;
                col = $(this).attr("column");
                row = $(this).attr("row");
                Game.current.attr({
                    "column":col,
                    "row":row
                });
                Game.move(Game.current);
                Game.changeTurn();
                Game.current = undefined;

            });
<board>
    <spot></spot>
    <piece></piece>
</board>
当我点击棋盘上的一个方块时,该函数会正常触发,但是当我将一个棋子拖放到棋盘上时,它不会显示鼠标已向上移动。但是,让我们离开棋子,因为光标直接位于棋子上方,并且所述棋子“阻止”光标直接位于点上方。值得注意的是,我的HTML结构是这样的

element.on("mouseup",function(e){
                if(Game.current==undefined||!$(this).hasClass("valid")){return;}
                var col,row;
                col = $(this).attr("column");
                row = $(this).attr("row");
                Game.current.attr({
                    "column":col,
                    "row":row
                });
                Game.move(Game.current);
                Game.changeTurn();
                Game.current = undefined;

            });
<board>
    <spot></spot>
    <piece></piece>
</board>


我的意思是,棋子、主教等不在这些点内,因此事件没有任何“气泡”通过。

更好的方法是将鼠标的侦听器连接到窗口对象,执行类似操作

$(window).on('mouseup', on_mouse_up );
然后,从鼠标位置计算出正确的点

function on_mouse_up( e ) {
    // Get the mouse position
    x = e.pageX;
    y = e.pageY;

    // Calculate the spot from the mouse position

}

一个简单的例子< /p>定义一个全局VAR来检查鼠标是上还是下,而不是定制它,你也许应该考虑使用JQuyYi的可拖动和可下拉。除了自动处理上述情况外,它还可以让您专注于游戏逻辑,而不是鼠标事件技术。这是我最初的计划,但jQuery是唯一允许我使用的库。事实上,我必须使用jQuery.Oh。好啊在这种情况下,将鼠标固定在板上,而不是点上。这样,鼠标在棋子上的位置可以浮到棋盘上。捕获后,根据电路板内的事件坐标确定点。有点像斯塔夫诺在下面说的,但你不需要让它冒泡到根本。谢谢你,我担心我会用数学。