【问题标题】:Edit OR Drag with same click编辑或拖动相同的点击
【发布时间】:2014-01-11 21:14:22
【问题描述】:

我想要这个:有一个可以点击或拖动的 div。如果我点击,我可以立即编辑它(插件使其可编辑)。或者,如果我创建 mousedown-mousemove 事件,它会拖动。

MY JSFIDDLE:

这是我的代码:http://jsfiddle.net/9N2hh/

这里的问题是,第一次一切正常。但是即使我重新绑定该功能,第二次它也无法正常工作。

有人知道怎么解决吗?

编辑: 我需要这样的代码:

obj.on('mousedown', function(){
    obj.on('mousemove')..  //here the drag should fire
    obj.on('mouseup') ..  //here the edit should fire (which fires without anything because "draggable: disabled" so just the mousemove need to be edited.
})

【问题讨论】:

  • 您使用哪个插件使您的 div 可编辑?
  • 不清楚你想要什么。每次触发 mousedown 事件时,您都会重新附加 mousemove 事件。因此,在几次 mousedowns 之后,大量的 mousemoves 将导致事件一遍又一遍地触发。你想要这个吗?
  • 是的,这正是我的问题。我不希望事件多次触发。该插件类似于“媒体编辑器”、zenpen 或钢笔编辑器。都是一样的,它基本上是一个使 div 可编辑的编辑器。

标签: javascript jquery html jquery-ui drag-and-drop


【解决方案1】:

这是你想要的吗?

http://jsfiddle.net/9N2hh/7/

obj.on('mousemove', function() {
    // Do stuff while moving.
});

obj.on('mouseout', function() {
    // sets draggable false
});

我正在使用 mouseout 事件来重置可拖动属性。我还移动了 mousemove 绑定,因此它不会在每次调用 mousedown 时反弹。

当我修改您的代码时,我想知道悬停事件是否更合适?这表明您的元素可以被拖动。当 mouseover 和 mousedown 时,您似乎允许拖动,这是可拖动的默认状态行为。

如果确实需要在其他事件中附加事件,则需要检查该事件是否已经附加。使用此链接How to check if an event handler exist using jQuery or JS? 有人在做类似的事情

【讨论】:

  • 非常感谢,我试试看。
  • 它不像我想要的那样工作,我需要的是“MouseDown”事件,在这个事件中是“MouseMove”和“MouseUp”事件。我已经编辑了我的主要帖子,所以你可以明白我的意思。
  • 我认为小提琴没有改变。嵌套事件不太可能有用,每次鼠标按下时都会附加一个新事件。修改了我的答案。真的想知道您是否可以只使用悬停事件?
  • 是的,但必须有一个解决方案.. 我认为我的 jsfiddle 中唯一的错误是重新附加事件,所以正如你所说,事件触发了 10000 次(无限循环)。我需要摆脱它
  • 编辑建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多