【问题标题】:Gridster not dynamically moving widgetsGridster 没有动态移动小部件
【发布时间】:2014-03-21 23:14:12
【问题描述】:

我正在尝试使用Gridster.js 在我的项目中执行一些拖放功能。

我正在为我的小部件使用一堆 div,其中包含表单和按钮,而不是使用无序列表。

我的问题是我的第一列无法拖动,我无法将小部件放在任何地方。他们只是回到原来的位置

这是我的布局:

<div class="gridster">
     <div class="dragMe" data-row="1" data-col="1" data-sizex="1" data-sizey="1">
          <form>
                <button>//button stuff here </button>
          </form>
     </div>
     <div class="dragMe" data-row="1" data-col="2" data-sizex="1" data-sizey="1">
          <form>
                <button>//button stuff here </button>
          </form>
     </div>
     <div class="dragMe" data-row="2" data-col="1" data-sizex="1" data-sizey="1">
          <form>
                <button>//button stuff here </button>
          </form>
     </div>
     <div class="dragMe" data-row="2" data-col="2" data-sizex="1" data-sizey="1">
          <form>
                <button>//button stuff here </button>
          </form>
     </div>

... ETC
</div>

这是我的 js,已准备好文档

var gridster = $('.gridster').gridster({
            widget_margins: [5,5],
            widget_selector: '.dragMe',
            widget_base_dimensions: [264, 103],
            max_cols: 5,
            max_rows: 5,
            resize: {
                enable: true
            },
            draggable: {
                start: function(event, ui) {
                    dragged = 1;
                },
                stop: function(event, ui){
                    var id = this.$helper[0].attributes[0].value;
                    var row = this.$helper[0].attributes[1].value;
                    var col = this.$helper[0].attributes[2].value;
                    console.log(id, row, col);
                }, 
                items: '.dragMe',
                limit: true
            }
        }).data('gridster');

我有 grister.js 和 css 文件。有什么改进建议吗?

【问题讨论】:

    标签: javascript jquery drag-and-drop gridster


    【解决方案1】:

    我认为 Gridster 需要在 &lt;div class="gridster"&gt; 元素下方添加一个元素(例如 divul):

    <div class="gridster">
         <div class="gridster-container">
             <div class="dragMe" data-row="1" data-col="1" data-sizex="1" data-sizey="1">
              <form>
                <button>//button stuff here </button>
              </form>
             </div>
             <div class="dragMe" data-row="1" data-col="2" data-sizex="1" data-sizey="1">
              <form>
                <button>//button stuff here </button>
              </form>
             </div>
             <div class="dragMe" data-row="2" data-col="1" data-sizex="1" data-sizey="1">
              <form>
                <button>//button stuff here </button>
              </form>
             </div>
             <div class="dragMe" data-row="2" data-col="2" data-sizex="1" data-sizey="1">
              <form>
                <button>//button stuff here </button>
              </form>
             </div>
    
        ... ETC
         </div>
    </div>
    

    还有 JavaScript:

    var gridster = $(".gridster div.gridster-container").gridster({...
    

    您也可以使用ulli,就像他们在他们的网站中使用的一样。

    【讨论】:

      【解决方案2】:

      我认为您的代码中还有其他东西搞砸了;检查这个jsfiddle,我复制并粘贴了你的代码,只添加了:

      .dragMe {
          background-color:#0f0;
      }
      .preview-holder {
          background-color:#000!important;
      }
      

      只需为它们着色,以便您可以看到小部件。除此之外,我唯一改变的是按钮的文本和你的“...ETC”。如果您尝试通过按钮拖动它,它不会拖动,但您可以从小部件上的任何其他位置拖动。

      如果由于某种原因您需要通过按钮拖动,我建议将其更改为非输入/按钮元素并使用 JavaScript 模拟您需要的任何功能。

      当我的网格给我带来麻烦时,我会检查以下内容:

      • 开始/结束标签都匹配

      • 数据属性有意义(如果小部件重叠,Gridster 会发疯)

      • 样式应用得当 - 确保它是 应该看起来像你想的那样。

        我有几次期待看到一件事,因为我不认为 javascript 有问题,但它缺少 CSS 样式。

      【讨论】:

      • 你知道为什么我不能移动一些小部件吗?我不需要移动按钮,我可以移动它的容器。我正在使用的网格是 5x5,我现在切换到它是一个无序列表,因为我无法到达任何地方。我的第一列和最后一个小部件不想通过尝试拖动它们来移动,但是当其他人被拖动到它们的位置时它们会移动
      • @Vnge 没有看到更多代码,根据该描述,这听起来很熟悉。行为很奇怪,你无法解释......你尝试不同的分叉,你读到有人做过它,你从 jsfiddle 复制并粘贴整个工作示例到你的项目中,但它仍然无法工作......我这是我在答案中列出的原因的组合。如果你能提供一个问题演示或链接的小提琴,我会检查出来。
      • @Vnge 这解决了您的问题吗?如果是这样,您介意将其标记为已解决吗?我确实根据您对另一个问题的要求来到这里 :-) 如果它仍然不起作用,我很乐意看看一个更具体的问题。根据您的初始代码示例,我可以使用 div 使其在 5x5 网格中工作。我添加了更多块并更新了小提琴:jsfiddle.net/Ed6ED/3
      • 我的一些项目没有移动的一个问题是因为一些按钮内部没有清除修复。我实际上不确定为什么这是解决方案。但这绝对有帮助!将其标记为已解决
      • 谢谢,很高兴能帮上忙!我的问题似乎通常来自风格。当我真的失控时,它可以帮助我删除所有的 CSS 并验证它是否只与他们网站上的演示 CSS 一起工作,然后逐渐将 CSS 更新为我的。 (当然还要确保数据属性有意义)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2015-04-20
      • 1970-01-01
      相关资源
      最近更新 更多