Gridstack 动态创建的小部件不拖动
Gridstack dynamically created widgets are not dragging
我正在使用 GridStack 库为我的小部件创建响应式布局。这是我在单击按钮时创建小部件的功能
function AddWidget()
{
var grid = $('.grid-stack').data('gridstack');
var html = '<div class="grid-stack-item-content">';
html += '<div class="col-md-3"> <label> Sample Textbox </label></div>';
html += '<div class="col-md-9"> <input type="text" class="form-control" /> </div>';
html += '</div>';
grid.addWidget($(html), 0, 0, 4, 1)
}
小部件创建成功。我也可以调整它的大小。 但问题是它们不可拖动。我可以在我的小部件项目 html 上看到 ui-draggable class,但它们没有拖动。
如果我已经在我的布局中定义了小部件,然后初始化了 stackgrid,那么它们工作正常。
在此处查看 Gridstack 浮动网格演示 http://gridstackjs.com/demo/float.html
添加另一个 div 可以解决您的问题 - 您需要将带有 class="grid-stack-item-content" 的 div 嵌套在另一个 div 中。此顶部 div 将被初始化为小部件。
例如:
function AddWidget()
{
var grid = $('.grid-stack').data('gridstack');
var html = '<div>'
html += '<div class="grid-stack-item-content">';
html += '<div class="col-md-3"> <label> Sample Textbox </label></div>';
html += '<div class="col-md-9"> <input type="text" class="form-control" /> </div>';
html += '</div></div>';
grid.addWidget($(html), 0, 0, 4, 1)
}
这解决了您的问题并正确添加了一个您现在可以正常拖动的小部件。
希望对您有所帮助!
对我来说 jQuery 被加载到其他地方的页面上,并导致与 GridStack 中添加小部件后添加调整大小元素的部分发生冲突,另外导致任何后续 JS 失败。
我通过删除 <script>
标签来添加 GridStack JS 并使用下面的代码来解决这个问题:
window.addEventListener("load", function(){
jQuery.getScript("https://cdn.jsdelivr.net/npm/gridstack@1.1.0/dist/gridstack.all.js", function(){;
// your GridStack code
})
})
框架作者计划很快删除 jQuery,幸运的是!
当你需要帮助而人们给你错误的信息时,情况会变得更糟,如果你不知道该去哪里,请不要指出,除了不尊重外,它还迫使人们寻找你需要的东西不存在。
可能你的错误和我的一样,我忽略了父div,直接包括<div class="grid-stack-item-content">
,不应该的,因为它是<div class="grid-stack-item">
的女儿,查看正确的格式:
<div class="grid-stack" data-gs-width="12" data-gs-animate="yes">
<div class="grid-stack-item" data-gs-x="0" data-gs-y="0" data-gs-width="4" data-gs-height="2">
<div class="grid-stack-item-content"><input type="text"></div>
</div>
</div>
将其放入点击功能中,看看是否适合您:
<script>
$grid = $('.grid-stack');
const widget = '<div class="grid-stack-item" data-gs-x="8" data-gs-y="0" data-gs-width="2" data-gs-height="2" data-gs-min-width="2" data-gs-no-resize="yes"><div class="grid-stack-item-content"><input type="text" class="form-control"></div></div>';
$grid.data('gridstack').addWidget(widget);
</script>
我正在使用 GridStack 库为我的小部件创建响应式布局。这是我在单击按钮时创建小部件的功能
function AddWidget()
{
var grid = $('.grid-stack').data('gridstack');
var html = '<div class="grid-stack-item-content">';
html += '<div class="col-md-3"> <label> Sample Textbox </label></div>';
html += '<div class="col-md-9"> <input type="text" class="form-control" /> </div>';
html += '</div>';
grid.addWidget($(html), 0, 0, 4, 1)
}
小部件创建成功。我也可以调整它的大小。 但问题是它们不可拖动。我可以在我的小部件项目 html 上看到 ui-draggable class,但它们没有拖动。
如果我已经在我的布局中定义了小部件,然后初始化了 stackgrid,那么它们工作正常。
在此处查看 Gridstack 浮动网格演示 http://gridstackjs.com/demo/float.html
添加另一个 div 可以解决您的问题 - 您需要将带有 class="grid-stack-item-content" 的 div 嵌套在另一个 div 中。此顶部 div 将被初始化为小部件。
例如:
function AddWidget()
{
var grid = $('.grid-stack').data('gridstack');
var html = '<div>'
html += '<div class="grid-stack-item-content">';
html += '<div class="col-md-3"> <label> Sample Textbox </label></div>';
html += '<div class="col-md-9"> <input type="text" class="form-control" /> </div>';
html += '</div></div>';
grid.addWidget($(html), 0, 0, 4, 1)
}
这解决了您的问题并正确添加了一个您现在可以正常拖动的小部件。 希望对您有所帮助!
对我来说 jQuery 被加载到其他地方的页面上,并导致与 GridStack 中添加小部件后添加调整大小元素的部分发生冲突,另外导致任何后续 JS 失败。
我通过删除 <script>
标签来添加 GridStack JS 并使用下面的代码来解决这个问题:
window.addEventListener("load", function(){
jQuery.getScript("https://cdn.jsdelivr.net/npm/gridstack@1.1.0/dist/gridstack.all.js", function(){;
// your GridStack code
})
})
框架作者计划很快删除 jQuery,幸运的是!
当你需要帮助而人们给你错误的信息时,情况会变得更糟,如果你不知道该去哪里,请不要指出,除了不尊重外,它还迫使人们寻找你需要的东西不存在。
可能你的错误和我的一样,我忽略了父div,直接包括<div class="grid-stack-item-content">
,不应该的,因为它是<div class="grid-stack-item">
的女儿,查看正确的格式:
<div class="grid-stack" data-gs-width="12" data-gs-animate="yes">
<div class="grid-stack-item" data-gs-x="0" data-gs-y="0" data-gs-width="4" data-gs-height="2">
<div class="grid-stack-item-content"><input type="text"></div>
</div>
</div>
将其放入点击功能中,看看是否适合您:
<script>
$grid = $('.grid-stack');
const widget = '<div class="grid-stack-item" data-gs-x="8" data-gs-y="0" data-gs-width="2" data-gs-height="2" data-gs-min-width="2" data-gs-no-resize="yes"><div class="grid-stack-item-content"><input type="text" class="form-control"></div></div>';
$grid.data('gridstack').addWidget(widget);
</script>