0

如何从创建事件中引用禁用的选项?

下面的代码可以工作,但我想通过不引用$(this),而是引用“event”和“ui”参数来使其更简洁和更短。我缺乏理解或知道如何使用这些参数的知识。

$(".myDroppables").droppable({
    create: function (event, ui) {
        //If class is full then set option disabled to true.
        if ($(this).hasClass('full'))
            $(this).droppable("option", "disabled", true);
    }
});

我想它看起来像这样:

$(".myDroppables").droppable({
    create: function (event, ui) {
        if ($(this).hasClass('full'))
            this.disabled = true;
    }
});

我该怎么做?

4

1 回答 1

1

回调参数记录在可放置小部件的概述中:

所有回调都接收两个参数:原始浏览器事件和准备好的ui对象:

  • ui.draggable- 当前可拖动元素,一个 jQuery 对象。
  • ui.helper- 当前的可拖动助手,一个 jQuery 对象。
  • ui.position- 可拖动助手的当前位置{ top: , left: }
  • ui.offset- 可拖动助手的当前绝对位置{ top: , left: }

也就是说,ui传递给dropcreate回调的参数不会暴露任何这些属性fiddle),可能是因为它在小部件的生命周期中太早了,以至于它们没有任何意义。

在您的特定情况下,您或多或少被迫使用this以应用禁用的选项。但是,您可以缓存 的返回值$(this)以稍微提高性能:

$(".myDroppables").droppable({
    create: function(event, ui) {
        var $this = $(this);
        // If class is full then set option disabled to true.
        if ($this.hasClass("full")) {
            $this.droppable("option", "disabled", true);
        }
    }
});
于 2011-08-14T14:56:41.160 回答