如何在 Jquery 嵌套列表中禁用拖放
how to disable drag and drop in Jquery Nestable List
我正在尝试使用 jquery 可嵌套创建一个嵌套列表,并在整个列表中禁用拖动功能。
下面是我的 html.
<div class="dd" id="nestable">
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Foo
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Bar
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Baz
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
</li>
</ol>
</li>
</ol>
</li>
</ol>
我的脚本如下所示::
$('.dd').each(function(){
$(this).nestable({
maxDepth: 1,
group: $(this).prop('id')
});
});
目前无法创建嵌套列表,用户可以重新排列嵌套列表。我希望禁用该功能,但我做不到。请指教
您可以设置最大深度:0
这不会禁用拖放,但不会阻止 obj 重定位
我遇到了类似的问题,并使用 CSS pointer-events
.
修复了它
CSS:
.drag_disabled{
pointer-events: none;
}
.drag_enabled{
pointer-events: all;
}
HTML:
<label class=""><input id="draggable_list" class="" name="draggable_list" type="checkbox" value="false"> <span>Activate Ordering </span></label>
<div id="list" class="drag_disabled dd">
<ol class="dd-list">
<li class="dd-item" data-id="Item 1">
<div class="dd-handle dd-outline dd-anim">
Text 1
</div>
</div>
</li>
<li class="dd-item" data-id="Item 3">
<div class="dd-handle dd-outline dd-anim">
Text 2
</div>
</li>
</ol>
</div>
JavaScript(只需在复选框上切换 类 drag_enabled
和 drag_disabled
:
$('#list').nestable({maxDepth: 1});
$('#draggable_list').change(function(){
$('#list').toggleClass('drag_disabled drag_enabled');
});
我已经浏览了 js 文件,我注意到 class "dd-handle" 的拖放处理。
因此,如果您更改句柄 class 名称,那么它将发挥作用。
$('.nestable').nestable({handleClass:'123'});
完成
有同样的问题。您只需要添加这些 css 代码
.drag_disabled{
pointer-events: none;
}
.drag_enabled{
pointer-events: all;
}
.dd-expand{
pointer-events: auto;
}
.dd-collapse{
pointer-events: auto;
}
然后您在页脚中添加 javascript
$('#nestable02').nestable({maxDepth: 1});
您禁用了除折叠外的所有指针事件。
我正在尝试使用 jquery 可嵌套创建一个嵌套列表,并在整个列表中禁用拖动功能。 下面是我的 html.
<div class="dd" id="nestable">
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Foo
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Bar
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
<ol class="dd-list">
<li class="dd-item" id="no-drag">
<div class="dd-handle">
Baz
<div class="pull-right action-buttons">
<a class="blue" href="#">
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
<a class="red" href="#">
<i class="ace-icon fa fa-trash-o bigger-130"></i>
</a>
</div>
</div>
</li>
</ol>
</li>
</ol>
</li>
</ol>
我的脚本如下所示::
$('.dd').each(function(){
$(this).nestable({
maxDepth: 1,
group: $(this).prop('id')
});
});
目前无法创建嵌套列表,用户可以重新排列嵌套列表。我希望禁用该功能,但我做不到。请指教
您可以设置最大深度:0 这不会禁用拖放,但不会阻止 obj 重定位
我遇到了类似的问题,并使用 CSS pointer-events
.
CSS:
.drag_disabled{
pointer-events: none;
}
.drag_enabled{
pointer-events: all;
}
HTML:
<label class=""><input id="draggable_list" class="" name="draggable_list" type="checkbox" value="false"> <span>Activate Ordering </span></label>
<div id="list" class="drag_disabled dd">
<ol class="dd-list">
<li class="dd-item" data-id="Item 1">
<div class="dd-handle dd-outline dd-anim">
Text 1
</div>
</div>
</li>
<li class="dd-item" data-id="Item 3">
<div class="dd-handle dd-outline dd-anim">
Text 2
</div>
</li>
</ol>
</div>
JavaScript(只需在复选框上切换 类 drag_enabled
和 drag_disabled
:
$('#list').nestable({maxDepth: 1});
$('#draggable_list').change(function(){
$('#list').toggleClass('drag_disabled drag_enabled');
});
我已经浏览了 js 文件,我注意到 class "dd-handle" 的拖放处理。
因此,如果您更改句柄 class 名称,那么它将发挥作用。
$('.nestable').nestable({handleClass:'123'});
完成
有同样的问题。您只需要添加这些 css 代码
.drag_disabled{
pointer-events: none;
}
.drag_enabled{
pointer-events: all;
}
.dd-expand{
pointer-events: auto;
}
.dd-collapse{
pointer-events: auto;
}
然后您在页脚中添加 javascript
$('#nestable02').nestable({maxDepth: 1});
您禁用了除折叠外的所有指针事件。