【问题标题】:Add/Remove individual widgets from gridster从 gridster 添加/删除单个小部件
【发布时间】:2014-05-09 15:45:40
【问题描述】:

我正在尝试添加和/或删除基于按钮单击功能的小部件。它可以工作,但是一旦调用该函数,它就会做一些奇怪的事情,即在任何鼠标单击时调用代码,而不仅仅是在 html 页面上单击按钮。因此,如果我单击 html 页面上的删除按钮,它将删除该小部件,但是如果我单击任何其他小部件(不是在按钮上),它仍然会删除该小部件。我只想要在 html 按钮单击时调用的函数,而不是任何鼠标单击。就像按钮正在初始化页面上的某些内容以使任何鼠标单击都调用删除功能。谁能解释为什么会发生这种情况以及我该如何解决?我的代码如下:

function deleteWidget() {
    var gridster = $('.gridster ul').gridster().data('gridster');
    $(document).on( "click", ".gridster ul li", function() {
        $(this).addClass("activ");
        gridster.remove_widget($('.activ'));
    });
    }

    function addWidget() {
    var gridster = $(".gridster ul").gridster().data('gridster');
    $(document).on("click", ".gridster ul li", function() {      
        gridster.add_widget('<li class="gs_w">The HTML of the widget...</li>', 2, 1);
    });
    }

<li data-row="1" data-col="4" data-sizex="1" data-sizey="1" class="gs_w"><button onclick="addWidget()" style="float: right;">+</button><h3>4</h3><span class="gs-resize-handle gs-resize-handle-both"></span></li>
<li data-row="1" data-col="6" data-sizex="1" data-sizey="1" class="gs_w"><button onclick="deleteWidget()"style="float: right;">-</button><h3>6</h3></li>

感谢您的帮助!

【问题讨论】:

    标签: gridster


    【解决方案1】:

    当您单击删除按钮时,您的代码正在创建一个绑定,该绑定可以对任何小部件进行任何单击,运行代码以将其删除。

    $(document).on( "click", ".gridster ul li", function() {
            $(this).addClass("activ");
            gridster.remove_widget($('.activ'));
        });
    

    您可以尝试将您的 html 更改为:

    <li data-row="1" data-col="4" data-sizex="1" data-sizey="1" class="gs_w"><button class="delete-button" style="float: right;">+</button><h3>4</h3><span class="gs-resize-handle gs-resize-handle-both"></span></li>
    <li data-row="1" data-col="6" data-sizex="1" data-sizey="1" class="gs_w"><button class="add-button" style="float: right;">-</button><h3>6</h3></li>
    

    并且,在您的 javascript 代码中,在初始化您的 gridster 后添加:

    $(document).on( "click", ".gridster .delete-button", function() {
        var gridster = $(".gridster ul").gridster().data('gridster');
        gridster.remove_widget($(this).parent());
    });
    
    $(document).on("click", ".gridster .add-button", function() {
        var gridster = $(".gridster ul").gridster().data('gridster');      
        gridster.add_widget('<li class="gs_w">The HTML of the widget...</li>', 2, 1);
    });
    

    希望对你有帮助。

    【讨论】:

    • 啊,有道理。谢谢!我能够弄清楚添加小部件,但仍然坚持删除它。这很好用。为了添加,我使用了这个: function addWidget() { var gridster = $(".gridster ul").gridster().data('gridster'); gridster.add_widget('
    • 小部件的 HTML...
    • ', 2, 1); }
    【解决方案2】:

    以下是将小部件添加到 gridster 网格所需的 jQuery 和 HTML。

    jQuery:

    $(document).on( "click", "#addWidgetButton", function(e) {
        e.preventDefault(); 
        gridster.add_widget.apply(gridster, ['<li>new</li>', 1, 2]);
    });
    

    HTML:

    <button id="addWidgetButton" style="float: right;">+</button>
    

    【讨论】:

    • 对不起,我认为这是自我解释,顶部是 Jquery,底部是 html,以最简单的形式帮助人们:-)
    • 感谢您提供更多信息。我试图美化你的回答。我希望我的编辑对你来说没问题。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签