作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到一种情况,我需要使用 JQuery Nestable 库,可以编辑或删除列表中的项目。
我尝试为此开发一个解决方案,但它没有按预期编辑或删除项目:
<section class="panel panel-margin-settings" id="first-component">
<header class="panel-heading">
<h2 class="panel-title">Categories</h2>
</header>
<a class="new-category" id="add-new-app-category">+ New Category</a>
<div class="panel-body">
<div class="dd" id="nestable">
<ol class="dd-list" id="dd-list-app-categories-container">
<li class="dd-item" data-id="1">
<div class="dd-handle">
<span id="category-item">Item 1</span>
<a href="#" class="close close-assoc-file"
data-dismiss="alert" aria-label="close">×</a>
</div>
</li>
</ol>
</div>
</div>
</section>
// activate Nestable for list 1
$('#nestable').nestable()
// FOR ADDING
var nestablecount = 1;
$('#add-new-app-category').click(function () {
$('#dd-list-app-categories-container').append('<li class="dd-item" data-id="' + (++nestablecount) + '"><div class="dd-handle"><span id="category-item">Item ' + nestablecount + '</span>' +'<a href="#" class="close close-assoc-file" data-dismiss="alert" aria-label="close">×</a>' + '</div>' + '</li>');
});
// FOR REMOVING
$("#dd-list-app-categories-container").on("click", ".close", function (event) {
$(this).closest('li').remove();
if (nestablecount > 0)
nestablecount--;
});
// FOR EDIT
$('#dd-list-app-categories-container').on('dblclick', '#category-item', function () {
var $input = $('<input type="text" value="' + $(this).text().trim() + '" />');
$(this).replaceWith($input);
$input.select();
}).on('blur', 'input', function () {
$(this).replaceWith('<span>' + $(this).val() + '</span>');
});
我在 JSFiddle 中做了一个例子: https://jsfiddle.net/6b3m348q/6/
这个问题的解决方案是什么?
最佳答案
Victor Sulema 针对这个问题提出了一个很好的解决方案:
<section class="panel panel-margin-settings" id="first-component">
<header class="panel-heading">
<h2 class="panel-title">Categories</h2>
</header>
<a class="new-category" id="add-new-app-category">+ New Category</a>
<div class="panel-body">
<div class="dd" id="nestable">
<ol class="dd-list" id="dd-list-app-categories-container">
<li class="dd-item" data-id="1">
<div class="dd-handle">
<span id="category-item">Item 1</span>
<a href="#" class="close close-assoc-file"
data-dismiss="alert" aria-label="close">×</a>
</div>
</li>
</ol>
</div>
</div>
</section>
// FOR ADDING
var nestableCount = 1;
$('#add-new-app-category').click(function () {
var $newItem = $('<li>', {
class: '.dd-item',
'data-id': ++nestableCount,
html: '<div class="dd-handle"><span id="category-item">Item ' + nestableCount + '</span>' +'<a href="#" class="close close-assoc-file" data-dismiss="alert" aria-label="close">×</a>' + '</div>'
});
$newItem.find('.close').click(removeOnClick);
$('#dd-list-app-categories-container').append($newItem);
$newItem = null;
});
// FOR REMOVING
$("#dd-list-app-categories-container .close").on("click", removeOnClick);
function removeOnClick (event) {
$(this).closest('li').remove();
if (nestableCount > 0) {nestableCount--};
}
// FOR EDIT
$('#dd-list-app-categories-container').on('dblclick', '#category-item', function () {
var $input = $('<input type="text" value="' + $(this).text().trim() + '" />');
$(this).html($input);
$input.select();
$input = null;
}).on('blur', 'input', function () {
$(this.closest('#category-item')).html($(this).val());
$(this).remove();
});
JSFiddle:https://jsfiddle.net/6b3m348q/9/
非常感谢维克多!
关于jquery - 如何在Jquery可排序库中制作可编辑或删除的可拖动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124874/
我是一名优秀的程序员,十分优秀!