首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery UI可排序将拖动对象的类添加到占位符以确定大小

jQuery UI可排序将拖动对象的类添加到占位符以确定大小
EN

Stack Overflow用户
提问于 2011-05-20 02:34:57
回答 1查看 10.3K关注 0票数 3

我使用sortable对不同的宽度x高度、div和砖石进行排序,以清理空白空间。如何将被排序的div的类传递给占位符,使它们的大小相同?

这些盒子有single-single,double-single等类别。以确定其大小。

示例:http://jsfiddle.net/c3mdigital/fTBbc/17/

问题是类没有被传递。Sortable在不识别占位符选项时添加类,但它将可见性设置为隐藏。

代码:

代码语言:javascript
复制
//The extra ajax stuff is to save the sort order to WordPress menu order.
$(document).ready(function() {
$('#edit').click(function() {

    var itemList = $('.sortable');

    itemList.sortable({
        
        start: function(event, ui) {
            
            var plus = ui.item.hasClass('double-single') ? 'double-single' : 'single-single';
            var placeholder = 
            itemList.sortable("option", "placeholder", 'placeholder ' + plus );
            
        },
                update: function(event, ui) {
                    $('#loading-animation').show(); // Show the animate loading gif while waiting
                    opts = {
                        url: MyAjax.ajaxurl,
                        // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php
                        type: 'POST',
                        async: true,
                        cache: false,
                        dataType: 'json',
                        data: {
                            action: 'item_sort',
                            // Tell WordPress how to handle this ajax request
                            order: itemList.sortable('toArray').toString() // Passes ID's of list items in  1,3,2 format
                        },
                        success: function(response) {
                            $('#loading-animation').hide(); // Hide the loading animation
                            return;
                        },
                        error: function(xhr, textStatus, e) { // This can be expanded to provide more information
                            alert(e);
                            // alert('There was an error saving the updates');
                            $('#loading-animation').hide(); // Hide the loading animation
                            return;
                        }
                    };
                    $.ajax(opts);
                }
              });
      
  
        });
 
    $('.sortable').disableSelection();
});
    
$(function() {
    $('#sort').click(function() {
        $('#sortable1').masonry({
            columnWidth: 325,
            itemSelector: '.ui-state-default'
        });
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 03:19:55

您不能在初始化可排序时触发的create事件上执行此操作。相反,您可以设置placeholder:'placeholder',并使用start事件向ui.placeholder添加一个额外的类,使其具有适当的大小:

代码语言:javascript
复制
    itemList.sortable({
        placeholder: 'placeholder',
        start: function(event, ui) {
            var plus;
            if(ui.item.hasClass('single-single')) plus = 'single-single'; else
            if(ui.item.hasClass('single-double')) plus = 'single-double'; else
            if(ui.item.hasClass('single-triple')) plus = 'single-triple'; else
            if(ui.item.hasClass('double-single')) plus = 'double-single'; else
            if(ui.item.hasClass('double-double')) plus = 'double-double'; else
            if(ui.item.hasClass('double-triple')) plus = 'double-triple'; else
                 plus = 'single-single';
            ui.placeholder.addClass(plus);
        }});

你可能想实现一个更复杂的类检测方法,它只是一个快速的复制粘贴,这样我就可以测试它了。

下面是演示:http://jsfiddle.net/fTBbc/24/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6063277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档