JQuery .resizable,如何为alsoResize属性选择child

时间:2011-01-27 07:46:06

标签: javascript jquery jquery-ui jquery-plugins

我有弹出的窗口,可以拖动和调整大小。一切都很好,除了我需要调整大小窗口也调整其中的div。这可以通过设置alsoResize: 'selector'轻松完成,但是,此窗口的每个实例都具有相同的div,并且具有相同的类名。如果您调整一个窗口的大小,它会调整所有打开窗口的内部div的大小。

$(chatWindow).draggable({ handle: '.dragHandle', containment: 'window', stack: '.chatWindow' })
    .resizable({ resize: function (event, ui) {
        api.reinitialise();
    },
        alsoResize: chatWindow + ' > .chatTerminal',
        start: function (event, ui) {
            var currentPosition = api.getContentPositionY();
            api.scrollToBottom();
            var maxPosition = api.getContentPositionY();
            api.scrollToY(currentPosition);
            var isAtBottom = (currentPosition == maxPosition);
            $(chatWindow).data('isAtBottom', isAtBottom);
        },
        stop: function (event, ui) {
            if ($(chatWindow).data('isAtBottom'))
                api.scrollToBottom();
        },
        minHeight: 125,
        minWidth: 250
    });

alsoResize: chatWindow + ' > .chatTerminal',不适用于选择子元素。我不能使用.find因为alsoResize只接受选择器。显而易见的快速解决方案是将窗口名称(每个新窗口的唯一名称)附加到内部div,然后在内部div上使用id选择器。我只是好奇是否有更好的方法来仅使用allResize的选择器来确定子元素。

1 个答案:

答案 0 :(得分:1)

var chatTerminal = '#' + channel + "_terminal";

alsoResize: chatTerminal

channel是主窗口的唯一ID,因此我在创建窗口时只将相同的唯一ID附加到子div上。然后我可以使用chatTerminal从alsoResize选项中引用它。我列出了这个答案,以防没有人回答,我会接受。但是,如果你们中的任何人有更好的方法从选择器字符串中选择一个孩子,请告诉我:)