代码之家  ›  专栏  ›  技术社区  ›  brahn

jquery UI可排序:如何更改“占位符”对象的外观?

  •  49
  • brahn  · 技术社区  · 15 年前

    在中给出的示例中 http://jqueryui.com/demos/sortable/#placeholder 占位符是拖动任何项目时出现的橙色框。

    可以使用 placeholder 选项--但它只允许您修改元素的类,如下所述: http://jqueryui.com/demos/sortable/#options

    我想更多地自定义此元素,例如通过向 占位符 选项,其方式与向 helper 选项

    要做到这一点,我需要更改什么(例如在sortable.js中)?

    2 回复  |  直到 15 年前
        1
  •  93
  •   Alconja    15 年前

    查看ui.sortable.js(1.7.2)的源代码,您可以作弊并设置 placeholder element 函数和 update 功能。这个 函数允许您执行诸如更正其大小之类的操作(您可以查看 _createPlaceholder

    例如,下面将创建一个包含单词的列表项 测试 内部作为占位符(请注意,它返回实际的dom对象)( [0] )而不是jQuery对象本身):

    $("#sortable").sortable({
        placeholder: {
            element: function(currentItem) {
                return $("<li><em>test</em></li>")[0];
            },
            update: function(container, p) {
                return;
            }
        }
    });
    

    如果我正确读取源代码,则 函数应传递当前项(jQuery对象)和 this sortable 本身(即。 $("#sortable") 在这种情况下)。在里面 更新 您将被传递到“container”,它是包含所有选项的对象&元素等,;这个

    请注意,这是一个未记录的黑客 ,因此它显然是不受支持的&可能会随下一版本的jQuery UI而更改。。。但考虑到你在谈论编辑,它仍然可能对你有用 ui.sortable.js 反正是直接的。

    希望有帮助。

        2
  •  53
  •   brahn    15 年前

    我发现了一个更老练的方法:一个人可以使用 start 修改占位符元素的选项,例如如下所示

    $("#sortable").sortable({
        start: function (e, ui) { 
          // modify ui.placeholder however you like
          ui.placeholder.html("I'm modifying the placeholder element!");
        }
    });