jQuery draggable / contenteditable代码无法正确响应

时间:2014-02-27 16:21:43

标签: javascript jquery html draggable contenteditable

我从另一篇文章中查找了这段代码:

<div id="d" contenteditable="true">
    Text to edit
</div>

<script>
$("#d")
    .draggable()
    .click(function(){
        $(this).draggable( "option", "disabled", true );
    })
    .blur(function(){
        $(this).draggable( 'option', 'disabled', false);
    });
</script>

链接是这样的: http://jsfiddle.net/UH9UE/222/

问题是,当jQuery版本在1.7时,对象的突出显示和“可选择性”是平滑的。但是当它切换到2.0.2时,它的功能不同。我正在为我的项目使用更高版本,这就是为什么我无法回滚到旧版本。

1 个答案:

答案 0 :(得分:1)

有一种方法可以用css实现这一目标。 在您的javascript中添加此功能

$.fn.drags = function(opt) {
    opt = $.extend({handle:"",cursor:""}, opt);

    if(opt.handle === "") {
        var $el = this;
    } else {
        var $el = this.find(opt.handle);
    }
    return $el.css('cursor', opt.cursor).on("mousedown", function(e) {
        if(opt.handle === "") {
            var $drag = $(this).addClass('draggable');
        } else {
            var $drag = $(this).addClass('active-handle').parent().addClass('draggable');
        }
        var z_idx = $drag.css('z-index'),
            drg_h = $drag.outerHeight(),
            drg_w = $drag.outerWidth(),
            pos_y = $drag.offset().top + drg_h - e.pageY,
            pos_x = $drag.offset().left + drg_w - e.pageX;
        $drag.css('z-index', 1000).parents().on("mousemove", function(e) {
            $('.draggable').offset({
                top:e.pageY + pos_y - drg_h,
                left:e.pageX + pos_x - drg_w
            }).on("mouseup", function() {
                $(this).removeClass('draggable').css('z-index', z_idx);
            });
        });
        //e.preventDefault(); // uncomment to avoid making editable
    }).on("mouseup", function() {
        if(opt.handle === "") {
            $(this).removeClass('draggable');
        } else {
            $(this).removeClass('active-handle').parent().removeClass('draggable');
        }
    });

}

只需使用此

调用它
$("#d").drags();

JSFiddle

根据找到的here原始代码进行了一些修改,以满足您的需求。