jquery sortable(' toArray')仅当元素属于另一个数组

时间:2016-07-18 13:37:41

标签: javascript jquery jquery-ui jquery-ui-sortable

我有一个页面,其中包含使用bootstrap 3渲染的许多div框。我希望其中一些可以排序。我想要排序的每个div都有一个特定的数据属性(例如:data-sortable =" box-1",data-sortable =" box-2" etc)

这样做:

$(".connectedSortable").sortable({
    placeholder: "sort-highlight",
    connectWith: ".connectedSortable",
    handle: ".box-header, .nav-tabs",
    forcePlaceholderSize: true,
    zIndex: 999999,
    stop: function(event, ui) {
     var columns = [];
        $(".ui-sortable").each(function(){
            columns.push($(this).sortable('toArray').join(','));
        });
    }
});

会在数组中添加一些其他div,因为一些静态div有自己的迷你可排序项,我可以在其他地方处理。 我想以某种方式将它们分开,并仅插入具有特定数据可排序标记的div。

有了这个:

$(".row").each(function(){
   var divsWithTag = $(this).find('[data-sortable]');
}

我可以得到我想要的所有div。有没有办法可以在这里调整这一行

columns.push($(this).sortable('toArray').join(','));

只推送与divsWithTag变量中的元素匹配的div?

1 个答案:

答案 0 :(得分:1)

您可以使用filter,并考虑toArray返回id-s数组的事实。下面,.attr()值被强制转换为布尔值:

finalColumns.push($(this).sortable('toArray').filter(function(id) {
    return $('#'+id).attr('data-sortable');
}).join(','));

或者使用.is(如在原始评论中)而不是id匹配/最初认为属性匹配集合只会被查找一次/

http://jsfiddle.net/h8h9u0k7/3/