附加 jQuery 的可调整大小的处理程序

Attach jQuery's resizable handlers

看到这个 jSFiddle

我正在尝试附加处理程序以调整大小 $('oWrapper_'+num)。但它不会调整大小。原因是因为 $('#oWrapper_'+num) 在执行时还没有添加到 dom,所以选择器不会 return 任何元素。

如何调整 $('oWrapper_'+num) 的大小而不是调整 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' })
        );


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

请看一下这个 fiddle 看看是否能解决您的问题。

var num = 0;

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;' })
);

cloudWrap.appendTo('body');

$("#oWrapper_" + num).resizable({
    handles: 'ne, se, sw, nw',
    aspectRatio: true,
});

您的自定义 css 类 干扰了 jQuery-UI 的 类,它们是在调用 .resizable() 时添加的。

此外,我将 .resizable() 调用移到了代码块的末尾,以确保该元素在调用之前出现在 DOM 中。

如果这不是您想要的,或者我误解了什么,请告诉我,我会进行必要的更改。谢谢!