我有一个页面,其中包含使用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?
答案 0 :(得分:1)
您可以使用filter
,并考虑toArray
返回id-s数组的事实。下面,.attr()
值被强制转换为布尔值:
finalColumns.push($(this).sortable('toArray').filter(function(id) {
return $('#'+id).attr('data-sortable');
}).join(','));
或者使用.is
(如在原始评论中)而不是id匹配/最初认为属性匹配集合只会被查找一次/