【问题标题】:Similate double click on drag end - jquery UI模拟拖动端双击 - jquery UI
【发布时间】:2014-02-03 19:27:01
【问题描述】:

这里我有一个两列的表。第一个是可拖动的 div 对象,所以:

$(function() {
    $( "div.available" ).draggable({
              snap: "div.timeline-axis-grid"
    });
  });

第二列是基于谷歌可视化 API 的时间线表。 http://jsbin.com/oLaqoToH/5

你会看到双击时间线表然后你会在时间线中创建一个新的 div 对象。

现在我想在结束将对象从第一列拖动到时间轴时模拟双击。 如此简单,我想通过这个小技巧将 div 对象从第一列添加到时间轴。 有没有办法做到这一点? 这可以与 jquery 一起使用吗? 如何模拟可拖动结尾的 dobuleclick?

更新:我不需要模拟双击,因为这个动作有一个功能:

http://almende.github.io/chap-links-library/js/timeline/timeline.js

/**
 * Double click event occurred for an item
 * @param {Event}  event
 */
links.Timeline.prototype.onDblClick = function (event) {
    var params = this.eventParams,
        options = this.options,
        dom = this.dom,
        size = this.size;
    event = event || window.event;

    if (params.itemIndex != undefined) {
        var item = this.items[params.itemIndex];
        if (item && this.isEditable(item)) {
            // fire the edit event
            this.trigger('edit');
        }
    }
    else {
        if (options.editable) {
            // create a new item

            // get mouse position
            params.mouseX = links.Timeline.getPageX(event);
            params.mouseY = links.Timeline.getPageY(event);
            var x = params.mouseX - links.Timeline.getAbsoluteLeft(dom.content);
            var y = params.mouseY - links.Timeline.getAbsoluteTop(dom.content);

            // create a new event at the current mouse position
            var xstart = this.screenToTime(x);
            var xend = this.screenToTime(x  + size.frameWidth / 10); // add 10% of timeline width
            if (options.snapEvents) {
                this.step.snap(xstart);
                this.step.snap(xend);
            }

            var content = options.NEW;
            var group = this.getGroupFromHeight(y);   // (group may be undefined)
            var preventRender = true;
            this.addItem({
                'start': xstart,
                'end': xend,
                'content': content,
                'group': this.getGroupName(group)
            }, preventRender);
            params.itemIndex = (this.items.length - 1);
            this.selectItem(params.itemIndex);

            this.applyAdd = true;

            // fire an add event.
            // Note that the change can be canceled from within an event listener if
            // this listener calls the method cancelAdd().
            this.trigger('add');

            if (this.applyAdd) {
                // render and select the item
                this.render({animate: false});
                this.selectItem(params.itemIndex);
            }
            else {
                // undo an add
                this.deleteItem(params.itemIndex);
            }
        }
    }

    links.Timeline.preventDefault(event);
};

如何使用此功能将对象拖动到时间轴而不是使用双击模拟???谢谢!

【问题讨论】:

    标签: javascript jquery html jquery-ui chap-links-library


    【解决方案1】:
    $( "div.available" ).draggable({
        snap: "div.timeline-axis-grid",
        stop: function(e, ui) {
            $(this).dblclick();
        }
    });
    

    【讨论】:

    • 还有我如何调用双击但不是在 coursoe 坐标上而是在可拖动的 div 对象顶部和左侧???
    【解决方案2】:

    这对我有用:

    $(function() {
        $( "div.timeline-event" ).draggable({
              snap: "div.timeline-axis-grid",
              stop: function(event){ timeline.onDblClick(event); }
        });
    });
    

    【讨论】:

    • 还有我如何调用双击但不是在 coursoe 坐标上而是在可拖动的 div 对象顶部和左侧???
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多