Как сослаться на отключенную опцию внутри события создания в jQuery UI? - PullRequest
0 голосов
/ 14 августа 2011

Как обратиться к отключенной опции внутри события создания?

Приведенный ниже код работает, но я хотел бы сделать его немного чище и короче, не ссылаясь на $(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;
    }
});

Как мне это сделать?

1 Ответ

1 голос
/ 14 августа 2011

Аргументы обратного вызова задокументированы в обзоре виджета :

. Все обратные вызовы получают два аргумента: исходное событие браузера и подготовленный объект ui:

  • ui.draggable - текущий перетаскиваемый элемент, объект jQuery.
  • ui.helper - текущий перетаскиваемый помощник, объект jQuery.
  • ui.position - текущая позицияперетаскиваемый помощник { top: , left: }
  • ui.offset - текущая абсолютная позиция перетаскиваемого помощника { top: , left: }

При этом аргумент ui передан в dropcreate callback не будет раскрывать ни одно из этих свойств ( fiddle ), возможно потому, что в жизненном цикле виджета слишком рано, чтобы они имели какое-либо значение.

В вашем конкретном случае вы более или менее вынуждены использовать this для применения опции disabled .Однако вы можете кэшировать возвращаемое значение $(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);
        }
    }
});
...