2017-04-18 54 views
1

我有一个图像,当我点击它,它应该创建一个div并将其放置在一个容器(父div),并使其可拖动。jquery-ui中的Draggable方法不与创建的元素

问题,我已经包括jquery-ui和jquery;但仍然可拖动的方法不起作用,它成功地将div添加到容器中,但它不可拖动。

这里是代码的jQuery和平:

var $homy; 
var texty; 
function perform(){ 
$homy=$("<div class='cabine'></div>"); 
texty=$("<textarea class='sub'></textarea>"); 
$homy.append(texty); 
$homy.draggable(); 
$homy.appendTo("#container"); 
} 

这里是HTML的一部分:

<div> 
<img class="accept" src="done.png" onclick="perform()" width="40" height="40"> 
</div> 

是有什么错?

+0

我在HTML中看不到#容器。这个元素在哪里?我怀疑创建的项目不能被追加,因为目标不存在。 – Twisty

回答

0

可拖动的div在那里,但textarea不能被拖动,因为你输入/可以重新调整它的大小。只是让它比内部div小,并给它一些边界的定义。

JSFiddle Demo

#container{ 
    border-style: solid; 
    width: 400px; 
    height: 200px; 
} 
.cabine{ 
    border-style: solid; 
    width: 200px; 
    height: 100px; 
    position:relative; 
    margin-left:50px; 
    margin-top:20px; 
} 
.sub{ 
    width: 100px; 
    height: 50px; 
    text-align: center; 
    margin-left:50px; 
    margin-top:20px; 
    resize: none; 
} 

使内DIV外内,改变.draggable()

$homy.draggable({ containment: "parent" }); 
+0

非常感谢你的男人! –

+0

没有问题。乐意效劳。 :-) – Ethilium

0

如前所述,我没有看到#container在你的HTML。我建议如下:

$(function() { 
    var $homy, texty; 
    function perform(e) { 
    $homy = $("<div>", { 
     class: "cabine", 
     title: "Enter Caption" 
    }); 
    texty = $("<textarea>", { 
     class: "sub" 
    }); 
    $(e.target).parent().append($homy); 
    $homy.html(texty).dialog(); 
    } 
    $("img.accept").click(perform); 
}); 

工作实例:https://jsfiddle.net/Twisty/zsdnsskg/

这就造成了divtextarea,在img后追加它们,并揭开序幕.dialog()

希望有所帮助。

+0

如果您想进一步研究,可以:https://jsfiddle.net/Twisty/zsdnsskg/3/ – Twisty

+0

非常感谢您付出的努力! –

相关问题