【问题标题】:Disable jQuery UI draggable if element has particular class如果元素具有特定类,则禁用 jQuery UI 可拖动
【发布时间】:2013-07-08 19:39:32
【问题描述】:

我有一个交互式购物篮,用户可以将一个项目拖放到购物篮中。但是,同一个项目不能在篮子中放置两次(但它仍然可见,尽管已褪色),所以一旦它在篮子中,draggable 属性必须被禁用。

我试过这样做:

$("#product_badges li:not(.on)").draggable({
    // Options here
});

但是,由于这只是启动了draggable() 属性,因此即使我添加了on 类,当它是dropped 时,该元素仍然是可拖动的。

因此,如果没有像这样的 draggable 属性的多个实例,我无法看到实现此目的的方法:

$("#product_badges li:not(.on)").each(function(){
    $(this).draggable({
        // Options here
    }
});

使用上述方法,我可以调用个人 product_badge 并像这样禁用拖动:

只有在物品被放入篮子(丢弃)后才会调用它

$('.item',$('#product_badges')).draggable('disable');

有没有更好的方法来实现这一点?能否将 HTML 元素设置为只有在没有特定类时才可拖动?

更新

在此处查看示例:http://jsfiddle.net/mB6GK/2/

【问题讨论】:

  • 可以加个jsfiddle吗?
  • @StephenKing 查看更新

标签: javascript jquery html jquery-ui draggable


【解决方案1】:

使用cancel 属性。

$("#product_badges li").draggable({ cancel: ".no" })

小提琴:

http://jsfiddle.net/sGguz/

【讨论】:

  • 这很棒 +1,不敢相信我在查看文档时错过了这个选项。会接受这一点,但只是想确保它不会引起任何其他问题...... :-)
【解决方案2】:

你可以使用开始事件,

$("#container").draggable({ 
      start: function( event, ui ) 
       { return !$(ui.helper).hasClass('nodrop'); }});

http://jsfiddle.net/mB6GK/4/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多