剑道可拖动:拖动开始后更改拖动项目

Kendo draggable: change dragged item after dragstart

本文关键字:拖动 项目 开始      更新时间:2023-09-26

在我的WebApp中,我使用Kendo ListView,其中每个项目都是可拖动的,以便在Kendo Scheduler中移动事件以注册它们。

ListView中的项目具有以下模板:

<div class="move myDivClass" myOtherAttributes="myOtherAttributes>
 <span class="mySpanClass">NUMBER</span>
</div>

我用这个代码制作了Kendo Draggables:

tempList.kendoDraggable({
  filter: ".move",
  dragstart: function (e) {
    //my code
    $("#hint").css("margin-left", e.clientX - $(e.initialTarget).offset().left - 20);
  },
    hint: function (row, event) {
    //remove old selection
    row.parent().find(".k-state-selected").each(function(){$(this).removeClass("k-state-selected") });
    row.addClass("k-state-selected");
    var hintElement = row.clone();
    hintElement.attr("id", "hint");
    hintElement.width(40).height(40);
    return hintElement;
  }
});

我的问题是,如果我在项目内的数字上按下鼠标按钮拖动项目,当我放在调度程序上时,由于各种原因,它不会被保存。(我花了很长时间才明白这个跨度的问题!)

我甚至想出了某种解决方案,通过在我的KendoDraggables 中添加这种适当性

ignore: "span"

这个解决方案的问题是,如果我在数字上按下鼠标按钮,我会得到一个"纯文本"选择,而不是拖动。这是有道理的,因为我把这个元素排除在可拖拉的东西之外。

因此,为了使这项工作正常进行,我认为我可以做一些事情:

  • 用不同的方式写下所说的数字,这样如果我点击数字,它就不会被选中
  • 如果在dragstart中,通过检查引用的事件"e",我注意到拖动的元素是一个跨度,请将拖动的元素更改为所述跨度的父元素

但我不知道该怎么做。所以我想问题是:

  • 有没有办法把数字写在盒子里,这样它就不会成为目标,但它后面的东西可能仍然是目标
  • 如果在dragstart中,我将对初始目标的所有引用都更改为父项,它会起作用吗?有没有一种方法可以系统地做到这一点,而不是寻找包含所述元素的所有字段

哦,该死,刚刚找到了正确的解决方案:)我将简单地删除跨度并将数字直接放在div中。

愚蠢的我。