【问题标题】:jquery selectable - Div and Canvasjquery 可选 - Div 和 Canvas
【发布时间】:2011-02-08 19:38:48
【问题描述】:

我正在使用 jquery 可选插件并将其运行到如下情况。

请看这张图片

html5 画布包含在 DIV 中。但是画布故意大于 DIV 大小。圆角矩形始终是 DIV 的大小。画布在 DIV 边界的每一侧都大了 10 个像素。在上图中,蓝色边界代表画布。

我有 jquery 可选,它选择了 class="mt_obj" 的所有对象。

DIV 被分配了这个类,但画布没有被分配这个类。

副作用是当我使用选取框选择(橡皮筋)时,如果它落在画布区域中,那么对象就会被选中。因此,如果我在蓝色边框和圆角方形边框之间单击,对象就会被选中。期望的行为是仅在用户单击灰色圆角方块时进行选择。

这是 HTML 代码。 如果它是画布对象,在 jquery 可选择或类选择中是否可以避免选择?。我认为画布选择会传播到 DIV,因为 div 是画布的父级。

<div style="display: block; position: absolute; 
top: 181px; left: 217px; width: 398px; height: 34px; z-index: 1;" 
class="mt_obj ui-resizable ui-draggable ui-selected ui-resizable-autohide">
<canvas  style="position: relative; 
top: -10px; left: -17.4561px;" width="432" height="54">
</canvas>
</div>

【问题讨论】:

  • 你能把你的整个代码贴出来吗?

标签: jquery jquery-selectors


【解决方案1】:

这有点像在黑暗中拍摄,但我猜 selectable 使用任何或所有 mouseover、mouseout、mouseenter 和 mouseleave 事件来触发选择。考虑到这一点,您可以在致电selectable 后执行以下操作:

$("div.mt_obj canvas").bind("mouseover mouseout", function(event){
  event.stopPropagation();
}); 

您也可以尝试其中的mouseentermouseleave 事件。

【讨论】:

  • 它不起作用。我什至尝试在画布上绑定单击事件,但没有触发任何内容。 jquery能识别canvas元素吗?
  • 无赖。抱歉,我没有任何直接的答案,但由于没有其他人提出任何“真实”的答案,我还有一些建议。有一些可能的选项可能会有所帮助。查看选项下的文档herecancel 选项允许您选择要排除的对象类型(如{cancel:'canvas'}),这可能有助于也可能不会有助于解决传播问题。 filter 选项可让您更具体地定义要选择的对象(如 {filter: 'div.mt_obj'})。
猜你喜欢
  • 2011-12-21
  • 2012-01-30
  • 2011-07-24
  • 2012-09-30
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
相关资源
最近更新 更多