如何在jQuery UI中从create事件中引用disabled选项?

时间:2011-08-14 12:26:53

标签: jquery-ui jquery-ui-droppable

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

下面的代码有效,但我想通过不引用$(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 个答案:

答案 0 :(得分:1)

回调参数记录在droppable小部件的overview

  

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

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

也就是说,传递给dropcreate回调ui参数不会公开任何这些属性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);
        }
    }
});