Jquery/Gridster 按钮影响所有项目而不是单个项目
Jquery/Gridster button affecting all items not single ones
我正在使用 Gridster 框架创建仪表板,每个仪表板项都有一个 'delete' 和 'pin' 按钮。但是,我遇到的问题是,当我单击 'pin' 按钮(将面板锁定到位)时,它会普遍影响所有面板,而不是单个面板。删除按钮可以正常工作并删除单个面板。我无法添加个人 ID 或 类,因为面板需要通用。为什么图钉按钮在这种情况下不起作用?
Pin(将所有面板锁定到位,但仅用于锁定有问题的单个面板):
$(document).on("click", ".gridster .pin-button", function () {
var pin = $(".gridster ul").gridster().data('gridster');
if (pin.drag_api.disabled) {
pin.enable($(this).parent());
} else {
pin.disable($(this).parent());
}
});
删除按钮(正确删除有问题的面板):
$(document).on("click", ".gridster .delete-button", function () {
var gridster = $(".gridster ul").gridster().data('gridster');
gridster.remove_widget($(this).parent());
});
示例面板:
<div class="gridster row">
<ul>
<li class="gs_w" data-row="1" data-col="1" data-sizex="4" data-sizey="3">
<button class="pin-button"><img src="pin.png"></button>
<button class="delete-button"><img src="Close.png"></button>
... panel content ...
</li>
</ul>
</div>
这是因为您的 pin 选择器是:
var pin = $(".gridster ul").gridster().data('gridster');
可能会找到另一个 .gridster ul,这应该与当前的 gridster 有关,因此您可能有:
var pin = $(this).parent('.gridster');
所以根据https://github.com/dustmoo/gridster.js
我所要做的就是为我的主 Gridster 分配一个静态 class 即:
<script type="text/javascript">
var gridster;
$(function () {
gridster = $(".gridster ul").gridster({
widget_base_dimensions: [100, 100],
widget_margins: [5, 5],
helper: 'clone',
static_class: 'card_static',
draggable: {
items: ".gs_w:not(.card_static)"
},
resize: {
enabled: true
}
}).data('gridster');
});
</script>
然后将我的 Pin JS 更改为:
$(document).on("click", ".gridster .pin_button", function () {
if ($(this).parent().hasClass("card_static")) {
$(this).parent().removeClass("card_static")
} else{
$(this).parent().addClass("card_static")
}
});
我正在使用 Gridster 框架创建仪表板,每个仪表板项都有一个 'delete' 和 'pin' 按钮。但是,我遇到的问题是,当我单击 'pin' 按钮(将面板锁定到位)时,它会普遍影响所有面板,而不是单个面板。删除按钮可以正常工作并删除单个面板。我无法添加个人 ID 或 类,因为面板需要通用。为什么图钉按钮在这种情况下不起作用?
Pin(将所有面板锁定到位,但仅用于锁定有问题的单个面板):
$(document).on("click", ".gridster .pin-button", function () {
var pin = $(".gridster ul").gridster().data('gridster');
if (pin.drag_api.disabled) {
pin.enable($(this).parent());
} else {
pin.disable($(this).parent());
}
});
删除按钮(正确删除有问题的面板):
$(document).on("click", ".gridster .delete-button", function () {
var gridster = $(".gridster ul").gridster().data('gridster');
gridster.remove_widget($(this).parent());
});
示例面板:
<div class="gridster row">
<ul>
<li class="gs_w" data-row="1" data-col="1" data-sizex="4" data-sizey="3">
<button class="pin-button"><img src="pin.png"></button>
<button class="delete-button"><img src="Close.png"></button>
... panel content ...
</li>
</ul>
</div>
这是因为您的 pin 选择器是:
var pin = $(".gridster ul").gridster().data('gridster');
可能会找到另一个 .gridster ul,这应该与当前的 gridster 有关,因此您可能有:
var pin = $(this).parent('.gridster');
所以根据https://github.com/dustmoo/gridster.js 我所要做的就是为我的主 Gridster 分配一个静态 class 即:
<script type="text/javascript">
var gridster;
$(function () {
gridster = $(".gridster ul").gridster({
widget_base_dimensions: [100, 100],
widget_margins: [5, 5],
helper: 'clone',
static_class: 'card_static',
draggable: {
items: ".gs_w:not(.card_static)"
},
resize: {
enabled: true
}
}).data('gridster');
});
</script>
然后将我的 Pin JS 更改为:
$(document).on("click", ".gridster .pin_button", function () {
if ($(this).parent().hasClass("card_static")) {
$(this).parent().removeClass("card_static")
} else{
$(this).parent().addClass("card_static")
}
});