2013-05-01 50 views
1

我试图让一个元素只有在满足某个条件时才可以拖动。这里是我的代码:jquery有条件拖动可观察?

$(".folder-box").draggable({ revert: "invalid" }); // prevent this from being applied when some ko.observable property is true 

我不想禁用该元素,我只是想阻止它是可拖动的。

回答

1

您必须为可拖动效果编写一个自定义绑定处理程序,以依赖于observable属性。幸运的是,这是如此简单:

ko.bindingHandlers.draggable = { 
     update: function(element, valueAccessor) { 
      var value = ko.utils.unwrapObservable(valueAccessor()); 
      if(value) { 
       $(element).draggable({ revert: "invalid" }); 
      } else if($(element).data('draggable')) { 
       $(element).draggable("destroy"); 
      } 
     } 
    }; 

你会然后用它像:

<div class="folder-box" data-bind="draggable: yourObservable"></div> 
+1

Jalayn有正确的想法。这是一个演示使用稍微不同的版本的小提琴:http://jsfiddle.net/blugrasmaniac/ZVDMe/ – 2013-05-01 17:31:59

+0

谢谢你们。出于某种原因,我不得不使用'ui-draggable'而不是'draggable',但现在它们都很好用。干杯! – SB2055 2013-05-01 22:00:49