如何从创建事件中引用禁用选项?
下面的代码有效,但我想通过不引用$(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;
}
});
我该怎么做?
答案 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);
}
}
});