代码之家  ›  专栏  ›  技术社区  ›  MDCore Dai Qizhi

如何在自定义助手中重新实现jquery的默认助手

  •  2
  • MDCore Dai Qizhi  · 技术社区  · 16 年前

    我正在创建自定义拖动助手(在jquery中):

    $('.dragme', element).draggable({
        appendTo: 'body',
        helper  : custom_drag_helper,
        opacity : 0.5
    });
    

    我这样做是因为我想有时克隆,有时执行默认功能,即拖动原始元素。

    function custom_drag_helper() {
        if (/*criteria on when to move instead of clone */) {
            return $(this); /* this is what helper: 'original' seems to do */
        } else {
            clone = $(this).clone(); /* this is what helper: 'clone' does */
            return clone;
        }
    }
    

    但我根本无法使用原始功能。return clone()工作正常,但是return$(这个)没有任何乐趣。

    1 回复  |  直到 16 年前
        1
  •  5
  •   MDCore Dai Qizhi    16 年前

    好吧,当我输入这个问题时,我做了更多的源代码挖掘,发现了下面这条小行:

    if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
            this.element[0].style.position = 'relative';
    

    这是我花了一天时间试图解决这个问题时没有发现的。添加 this.style.position = 'relative'; 上面的代码解决了这个问题!