【问题标题】:jQuery draggable helper positionjQuery可拖动助手位置
【发布时间】:2013-02-12 15:29:03
【问题描述】:

我想在拖动开始时更改可拖动助手位置的位置,因此网格将计入拖动元素的新位置。

拖动元素在开始时更改其宽度(开始拖动)并且它不“适合”网格 [100x100]。

start: function (event, ui) {
    ui.helper.css("width", '102px');
}

这里是示例:http://jsfiddle.net/sYHre/73/

正如您在示例中看到的蓝色元素完全适合网格,但红色元素不是。我试图动态改变它的位置,但这不起作用(注释掉的代码),对象在跳跃,我认为这是 jquery ui 中的一种错误。也许有更好的方法来做到这一点?

我正在使用最新的 jQuery 和 jQuery UI 1.9.2

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    一旦开始拖动,元素的宽度就会发生变化,因为它最初属于two 类,即width: 51px,但是一旦开始拖动,您的start 函数会将其更改为ui.helper.css("width", '102px')。如果你不想改变它的宽度,把那条线去掉——除了改变那个项目的宽度之外,它没有做任何事情。如果您确实希望宽度改变宽度但没有“跳跃”,您可以为更改设置动画以使其更平滑 - ui.helper.animate({width: 102}, 500) 似乎工作正常。不过,即使这有点令人迷惑 - 我建议不要更改宽度,除非有我认为没有这样做的原因。

    该对象不适合网格,因为 two 类要求它位于 left: 50%,这与您的 100 x 100 网格无法完美对齐。如果您希望它与网格对齐,您可以通过将其更改为 left: 504px 来使其对齐。

    另一方面,如果您希望它从left: 50% 开始,但是一旦您开始拖动,捕捉到最近的角落,您想将snap: '.target' 添加到您的选项列表中。这将迫使它捕捉到网格,即使它没有开始与网格对齐。 (事实上​​,如果您愿意,您可以设置snapTolerance: 100,在这种情况下您甚至不需要网格 - 可拖动对象将始终捕捉到目标对象。)

    Here's an updated fiddle 表示使用了snapThis is the same fiddle,但是宽度变化是动画的,所以你可以看到它是如何工作的。

    我希望这回答了你的问题。如果不是,请尝试再次准确解释您要达到的目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2023-04-02
      • 2018-02-09
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多