将DIV拖动到水平可排序容器

时间:2013-09-05 12:04:34

标签: javascript jquery html css jquery-ui

我正在构建某种播放列表创建者。我有一些用户可以选择的项目和一个水平可排序的时间轴区域来删除这些项目。

可拖动:

$(".Name:not(#Add a .Name)").draggable({
    revert: 'invalid',
    start: function(){
        $('#MainPage').css('cursor', '-moz-grabbing');
        $(".Name").css('cursor', '-moz-grabbing');
    },
//          helper: "clone",
    helper: function() { 
        return $("<div class='"+$(this).parent().attr('class')+"' id='"+$(this).parent().attr('id')+"'><div class='"+$(this).attr("class")+"' id='"+$(this).attr("id")+"'>"+ $(this).attr("class").split(' ')[1] +"</div></div>"); 
    },
    stop: function() {
        $('#MainPage').css('cursor', 'auto');
        $(".Name").css('cursor', '-moz-grab');
    },
    connectToSortable: "#TimelineDrop",
    appendTo: '#MainPage',
    containment: 'DOM',
    zIndex: 800,
    addClasses: false
});

可排序:

$("#TimelineDrop").sortable({ 
    over: function(event, ui) {
        var Breite = ((TimeSpace*5)/(TimeSpace/(currentspacing+24)))-2;
        $("#TimelineDrop").append("<div class='TimelineMarker' style='width:"+ Breite +"px;'>\u00A0</div>");
    },
    receive: function(event, ui) { 
        dropped=true;
        AddElementToTimeline($(this), event, ui, dropped); 
    },
    start: function( event, ui ){ 
        $('#MainPage').css('cursor', '-moz-grabbing');
        $('.TimelineElement').css('cursor', '-moz-grabbing');
        drag=true;
    },
    axis: "x",
    stop: function( event, ui ){
        $('#MainPage').css('cursor', 'auto');
        $('.TimelineElement').css('cursor', '-moz-grab');
        database.updateElementPosition($('.TimelineElement').index($(ui.item)), $(ui.item).children('.TimelineElementTitle').attr('id').split('D')[1], GET('id'));
        drag=false;
    }
});

我尝试了各种不同的东西但却无法正常工作。想要的是将项目从可用区域拖动到时间线,并在所有已添加的项目之间删除它们。到目前为止,助手总是在现有元素上方附加(垂直),当我放下它时,最后一个元素将被追加到最后一个位置。我希望很清楚我想要存档的内容......

我在这里有一个小提琴:

http://jsfiddle.net/5SBax/4/

我希望标记显示在元素添加的位置(在其他元素之间)。而且我需要摆脱每次都添加的帮助元素......

1 个答案:

答案 0 :(得分:1)

看看这个小提琴。我不太确定你在问什么,但这是拖放功能的一个很好的例子。我无法评论,我不太确定你在问什么。但祝你好运!

http://jsfiddle.net/cuhuak/4CHDZ/

function FieldType(typeName, name) {
    var self = this;
    self.TypeName = ko.observable(typeName || "");
    self.Name = ko.observable(name || this.TypeName());
    self.createField = function () {
        return new Field(
            {
                Name: this.Name(),
                TypeName: this.TypeName()
            }
        );
    }
    self.onDragStart = function(event, ui) {
        dropFieldType  = ko.utils.domData.get(this, "ko_drag_data");
    };
    self.onDragStop = function(event, ui) {
        dropFieldType = null;
    };
}