如何调整克隆的jQuery UI元素(图像)的大小

时间:2012-03-22 02:54:11

标签: jquery jquery-ui resize clone

我有一些特别的需要克隆一个元素(图像)并且可以在容器内拖拽并且仍然保留其可拖动(但不是克隆)一次。

我想让只在容器内拖动的克隆元素也可以重新调整大小,但是我无法让它工作。

我只能调整父元素的大小。有没有办法只对.resize克隆元素?

有些不可思议,但有效的例子:http://jsfiddle.net/rGUma/4/

代码:

<div class="drag"><img src="..." /></div>
<div class="drag"><img src="..." /></div>
<div class="drag"><img src="..." /></div>
<div class="drop-zone"></div>


  <script>
    $(".drop-zone").droppable({
        accept: '.drag',
        drop: function(event, ui) {
            var $clone = ui.helper.clone();
            if (!$clone.is('.inside-drop-zone')) {
                $(this).append($clone.addClass('inside-drop-zone').draggable({
                     containment: '.drop-zone'
                }));
            }
        }
    });
    $(".drag").draggable({
        helper: 'clone'
    });

    //this works but I dont want it on outside elements
     $( '.drag' ).resizable({  
      helper: "ui-resizable-helper"
    });

     //this doesn't work on cloned images but what I want working       
    $( '.drop-zone img' ).resizable({  
      helper: "ui-resizable-helper"
    });        

    // '.inside-drop-zone img'  also doesnt work

});​

</script>

PS。如果有人能够解释为什么它不起作用,那将非常感激。

3 个答案:

答案 0 :(得分:1)

它不起作用,因为克隆从未设置为可调整大小。 .resizable仅适用于开头存在的元素,而不适用于您创建的任何新元素。

我将可调整大小的调用移动到克隆部分以将其应用于克隆。这也意味着根据源(updated jsfiddle)中的注释,外部框不可调整大小:

$(document).ready(function($) {

    $(".drop-zone").droppable({
        accept: '.drag',
        drop: function(event, ui) {
            var $clone = ui.helper.clone();
            if (!$clone.is('.inside-drop-zone')) {
                $(this).append($clone.addClass('inside-drop-zone').draggable({
                    containment: '.drop-zone'
                }));

                $clone.resizable({ //this works but I dont want it to on outside elements
                    helper: "ui-resizable-helper"
                });
            }
        }
    });
    $(".drag").draggable({
        helper: 'clone'
    });


    $('.drop-zone img').resizable({ //this doesn't work because its cloned "inside" but its what I want working
        helper: "ui-resizable-helper"
    });


    // '.inside-drop-zone img'  also doesnt work
    // 
});

答案 1 :(得分:0)

当克隆出生时,将可调整大小的创建绑定到某种事件上?

$('.drop-zone').on('hover', '.drag', function() {
    $(this).resizable({  
       helper: "ui-resizable-helper"
    });
});

答案 2 :(得分:0)

只需使用:

$clone.children().resizable({
    helper: "ui-resizable-helper"
});

class: drop-zone下的所有图片都将重新调整大小。