2

我的页面上有一个控件,其中包含多个需要调整大小的多行文本框。
我正在尝试使用 jQuery resizable 函数来完成此任务。我只需要我的文本框可以垂直扩展。不幸的是,我只能让可调整大小的函数适用于第一个 div。

这是我的代码示例:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Page_jQuery_Resizable.aspx.vb"
    Inherits="jQueryTest.Page_jQuery_Resizable" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>jQuery Test - Page 2</title>
    <script src="Scripts/js/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script src="Scripts/js/jquery-ui-1.8.6.custom.min.js" type="text/javascript"></script>
</head>
<body>
    <style type="text/css">
        table.textboxTable td
        {
            padding: 15px;
            padding-bottom: 30px;
            border: 2px solid blue;
        }
        .ImResizable
        {
            height: 60px;
            width: 470px;
        }
        .ImResizable textarea
        {
            height: 95%;
            width: 100%;
        }
        .ui-resizable-handle
        {
            height: 8px;
            width: 474px;
            background: #EEEEEE url('Images/grippie.png') no-repeat scroll center;
            border-color: #DDDDDD;
            border-style: solid;
            border-width: 0pt 1px 1px;
            cursor: s-resize;
        }
    </style>
    <form id="form1" runat="server">

    <table class="textboxTable">
        <tr>
            <td>
                <div class="ImResizable">
                    <asp:TextBox runat="server" TextMode="MultiLine" />
                    <div class="ui-resizable-handle" />
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="ImResizable">
                    <asp:TextBox runat="server" TextMode="MultiLine" />
                    <div class="ui-resizable-handle" />
                </div>
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
<script type="text/javascript">
    $(function ()
    {
        $("div.ImResizable").resizable(
        {
            minHeight: 25,
            maxHeight: 85,
            minWidth: 470,
            maxWidth: 470,
            handles: { 's': $("div.ui-resizable-handle") }
        });
    });
</script>

替代文字

4

4 回答 4

4

您可以使用 $.each 并遍历元素。像这样:

$("div.ImResizable").each(function() {
    var $this = $(this);
    $this.resizable({
        minHeight: 25,
        maxHeight: 85,
        minWidth: 470,
        maxWidth: 470,
        handles: { 's': $this.find("div.ui-resizable-handle") }
    });
});
于 2010-11-09T15:06:52.537 回答
0

您正在寻找jQuery.each函数。

于 2010-11-09T14:35:55.023 回答
0

以上正确。您需要遍历类的每个元素,并分配子句柄或相关句柄,就像您现在所做的那样,您将 div.ui-resizable-handle 的通用类分配为句柄div.ImResizable 的通用类元素。它们没有一对一的匹配。

于 2010-11-09T14:42:43.460 回答
0

基本上,如果您一次将 Resizable 应用于多个对象,则只需为要用作句柄的子元素传递一个选择器。此外,在要应用可调整大小的每个元素中,这必须相同。

例子

引用自 jQueryUI 网站。加粗以强调。http://api.jqueryui.com/resizable/#option-handles

对象:支持以下键:{ n, e, s, w, ne, se, sw, nw }。任何指定的值都应该是一个jQuery 选择器,它与可调整大小的子元素匹配以用作该句柄。如果句柄不是可调整大小的子对象,则可以直接传入 DOMElement 或有效的 jQuery 对象。注意:生成自己的句柄时,每个句柄都必须具有 ui-resizable-handle 类,以及适当的 ui-resizable-{direction} 类,例如 ui-resizable-s

HTML:

<table class="textboxTable">
    <tr>
        <td>
            <div class="ImResizable">
                <asp:TextBox runat="server" TextMode="MultiLine" />
                <div class="ui-resizable-handle" />
            </div>
        </td>
    </tr>
    <tr>
        <td>
            <div class="ImResizable">
                <asp:TextBox runat="server" TextMode="MultiLine" />
                <div class="ui-resizable-handle ui-resizable-s" />
            </div>
        </td>
    </tr>
</table>

Javascript:

$(function ()
{
    $("div.ImResizable").resizable(
    {
        minHeight: 25,
        maxHeight: 85,
        minWidth: 470,
        maxWidth: 470,
        handles: { 's': "div.ui-resizable-handle" }
    });
});
于 2014-06-23T18:03:44.903 回答