JQuery将一段代码应用于多个元素

时间:2014-12-16 00:16:12

标签: javascript jquery html jquery-ui

我试图将一段代码应用于多个div:

 $('.elementResizable').resizable({
                    handles: {
                            'nw': '#nwgrip',
                            'sw': '#swgrip',
                            'se': '#segrip',
                            'e': '#egrip',
                            'n': '#ngrip',
                            's': '#sgrip',
                            'w': '#wgrip',
                    }
            });

这是HTML:

<div class='elementResizable'  >
            <div class="moveHandle glyphicon glyphicon-move"  id="testMove"></div>
        <input class="test .editable" type="text" id="test" value="Full Name"></input>
        <div class="ui-resizable-handle ui-resizable-nw" style="display:none" id="nwgrip"></div>
        <div class="ui-resizable-handle ui-resizable-sw" style="display:none" id="swgrip"></div>
        <div class="ui-resizable-handle ui-resizable-se" style="display:none" id="segrip"></div>
        <div class="ui-resizable-handle ui-resizable-e" style="display:none" id="egrip"></div>
        <div class="ui-resizable-handle ui-resizable-n" style="display:none" id="ngrip"></div>
        <div class="ui-resizable-handle ui-resizable-s" style="display:none" id="sgrip"></div>
        <div class="ui-resizable-handle ui-resizable-w" style="display:none" id="wgrip"></div>

    </div>

    <div class='elementResizable'  >
            <div class="moveHandle glyphicon glyphicon-move"  id="testMove"></div>
        <input class="test .editable" type="text" id="test" value="Full Name"></input>
        <div class="ui-resizable-handle ui-resizable-nw" style="display:none" id="nwgrip"></div>
        <div class="ui-resizable-handle ui-resizable-sw" style="display:none" id="swgrip"></div>
        <div class="ui-resizable-handle ui-resizable-se" style="display:none" id="segrip"></div>
        <div class="ui-resizable-handle ui-resizable-e" style="display:none" id="egrip"></div>
        <div class="ui-resizable-handle ui-resizable-n" style="display:none" id="ngrip"></div>
        <div class="ui-resizable-handle ui-resizable-s" style="display:none" id="sgrip"></div>
        <div class="ui-resizable-handle ui-resizable-w" style="display:none" id="wgrip"></div>

    </div>

然而,句柄只附加到elementResizables中的一个,所以我只能调整一个,有没有办法将句柄附加到单独的句柄而不必为类使用不同的名称?

2 个答案:

答案 0 :(得分:3)

使用句柄上的类而不是ids-id是唯一的!将ID替换为类,然后将JavaScript中的选择器更改为.nwgrip.swgrip等。然后使用.find.each将其限制为子元素:< / p>

$('.elementResizable').each(function () {
    $(this).resizable({
        handles: {
            'nw': $(this).find('.nwgrip'),
            'sw': $(this).find('.swgrip'),
            'se': $(this).find('.segrip'),
            'e': $(this).find('.egrip'),
            'n': $(this).find('.ngrip'),
            's': $(this).find('.sgrip'),
            'w': $(this).find('.wgrip'),
        }
    });
});

答案 1 :(得分:0)

您有多个具有相同ID的项目,这在HTML中是不允许的。 ID应该是唯一的。如果您将自己的ID转换为课程,它可能适合您。

我不太熟悉jQuery UI的可调整大小,但是从the documentation来看,您似乎不需要提供句柄?