我正在向第三方控件(选项卡式控件)添加通过拖放重新排列其选项卡的功能。只应允许移动选定的选项卡。为此,我在 jquery ui 中使用带有 cancel 属性的 sortable 函数。
该控件有一个 div 包含选项卡(也是 div),但 div 选项卡也包含更多 div:
<div class="TabControl-Container">
<div class="ui-state-default TabControl-Tab_Selected">Tab 1
<div>tab container</div>
</div>
<div class="ui-state-default">Tab 2
<div>tab container</div>
</div>
<div class="ui-state-default">Tab 3
<div>tab container</div>
</div>
<div class="ui-state-default">Tab 4
<div>tab container</div>
</div>
</div>
为了限制仅选择选项卡的移动,我在取消属性中执行了否定选择器:
$(function () {
var dummy = $(".TabControl-Container");
$(dummy).sortable({
cancel: 'div :not(.TabControl-Tab_Selected)'
});
});
它正在禁用除“Tab 1”以外的选项卡(没关系),但问题是 Tab 1 中包含的 div 也被禁用。我需要可以拖动选项卡 1 内的 div(或任何类似图像的标签)或不能移动孔选项卡。
你可以在这里看到问题:http: //jsfiddle.net/WD2Rw/24/