jquery寫了一個拖拽,但是每次mousemove的時候,總是有一個向左跳動,怎麼能沒有這個跳動?
.wrap{ width:328px; position: absolute; left:50%; top:30%; margin-left:-164px; //应该是这个margin-left造成的 padding:10px; background:#eeeeee; border-radius: 10px; } //js $('.wrap').on('mousedown',function(e){ var _this=$(this) disX=e.clientX-$(this).offset().left; disY=e.clientY-$(this).offset().top; $(document).on('mousemove',function(e){ _this.css('left',e.clientX-disX) _this.css('top',e.clientY-disY) }); $(document).on('mouseup',function(){ $(this).unbind('mousemove'); }) })
divItem子元素在divBox的上面,
當滑鼠移到divItem上的時候,已經是從divBox移動到另一個元素了,
先觸發divBox的mouseout事件,再觸發divItem的mouseover事件。
你這樣的需求是無法直接實現的,看能否換個方式,來達到你要的效果。
1、可以在divItem的mouseover事件裡面呼叫divBox的mouseover所呼叫的方法。
2、你的divItem是用來做什麼的,能否用divBox的背景圖片取代。
3、或把所有div的position:absolute,然後把divBox的z-index設定為大於divItem的z-index,
再把divBox設定為半透明的形式。
看了半天代碼沒問題,後來css去掉了 就ok了 再後來去掉margin-left:-164px或者改為非負數;也是ok的
以上是jquery如何實現拖曳時每次mousemove的時候都有一個向左跳動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!