使用jquery可调整大小的处理程序附加和调整div

时间:2015-03-03 10:40:12

标签: javascript jquery html css jquery-ui

我正在尝试附加处理程序以调整$('oWrapper_'+num)的大小。但它没有调整大小。我不是因为这个问题是因为处理程序附加到错误的div?

我需要的是能够将处理程序附加到$('oWrapper_'+num)并能够使用处理程序调整大小。

    num++
    var cloudWrap = $('<div />', { id: 'cloudWrap_'+num}),
        outerWrap = $('<div />').appendTo(cloudWrap)

        outerWrap.append(
            $('<div />', { class: 'tf', id: 'oWrapper_'+num, style: 'white-space:pre-line; font-size: 2vw;' }),
            $('<div />', { class: 'ui-resizable-handle ui-resizable-ne hndl' }),
            $('<div />', { class: 'ui-resizable-handle ui-resizable-se hndl' }),
            $('<div />', { class: 'ui-resizable-handle ui-resizable-sw hndl' }),
            $('<div />', { class: 'ui-resizable-handle ui-resizable-nw hndl' })
        );


        jQuery('#oWrapper_'+num).resizable({
          handles: {
            'ne': '.ui-resizable-ne',
            'se': '.ui-resizable-se',
            'sw': '.ui-resizable-sw',
            'nw': '.ui-resizable-nw'
          },
          aspectRatio: 16 / 9,
        });

编辑:

outerWrap.resizable({
              handles: {
                'ne': '.ui-resizable-ne',
                'se': '.ui-resizable-se',
                'sw': '.ui-resizable-sw',
                'nw': '.ui-resizable-nw'
              },
              aspectRatio: 16 / 9,
          create: function(event, ui) {
                initDiagonal = getContentDiagonal();
                initFontSize = parseInt($("#oWrapper_"+num).css("font-size"));
            },
            resize: function(e, ui) {
                var newDiagonal = getContentDiagonal();
                var ratio = newDiagonal / initDiagonal;

                $("#oWrapper_"+num).css("font-size", (initFontSize/100) + (ratio / (initFontSize/1000))  + "vw");
            }
        });

function getContentDiagonal() {
    var contentWidth = $("#oWrapper_"+CretCount).width();
    var contentHeight = $("#oWrapper_"+CretCount).height();
    return contentWidth * contentWidth + contentHeight * contentHeight;
}

1 个答案:

答案 0 :(得分:0)

问题是你的id选择器jQuery('#oWrapper_'+num),当执行它时,新元素尚未添加到dom中,因此选择器不会返回任何元素,因此resizable处理程序赢了& #39; t初始化。

在您的情况下,变量cloudWrap引用新创建的元素,因此您可以使用它来初始化窗口小部件。

num++;
var cloudWrap = $('<div />', { id: 'cloudWrap_'+num}),
    outerWrap = $('<div />').appendTo(cloudWrap)

outerWrap.append(
    $('<div />', { class: 'tf', id: 'oWrapper_'+num, style: 'white-space:pre-line; font-size: 2vw;' }),
    $('<div />', { class: 'ui-resizable-handle ui-resizable-ne hndl' }),
    $('<div />', { class: 'ui-resizable-handle ui-resizable-se hndl' }),
    $('<div />', { class: 'ui-resizable-handle ui-resizable-sw hndl' }),
    $('<div />', { class: 'ui-resizable-handle ui-resizable-nw hndl' })
);


cloudWrap.resizable({
    handles: {
        'ne': '.ui-resizable-ne',
        'se': '.ui-resizable-se',
        'sw': '.ui-resizable-sw',
        'nw': '.ui-resizable-nw'
    },
    aspectRatio: 16 / 9,
});