【发布时间】:2021-12-02 11:38:32
【问题描述】:
我在一个项目中工作,我想实现 open 和 close 按钮,但我做不到
目前,它是两者的关闭按钮,我需要添加单独的打开和关闭按钮,以便当用户点击打开时它会打开,当有人点击关闭时,它也应该正确关闭,当我点击连续关闭时按钮冻结一段时间
这是我的JSFiddle Demo的演示
请查看按钮无法正常工作的 js Fiddle 演示
这里是代码
function createItem(item) {
var elemId = item.data("id");
var clonedItem = item.clone();
var newItem = $(`<div data-id="${elemId}"></div>`);
newItem.append(clonedItem);
newItem.appendTo('.item-append');
}
function countSaveItems() {
$('.count').html($(".item-append div.item-save[data-id]").length);
}
$('.item-all .item-save').click(function() {
$(this).toggleClass('productad')
window.localStorage.setItem('test_' + this.dataset.id, $(this).hasClass('productad'));
});
$('.item-all .item-save').each(function() {
var id = 'test_' + $(this).data("id");
$(this).append(`<button class='close'>Close</button>`);
if (localStorage.getItem(id) && localStorage.getItem(id) == "true") {
$(this).addClass('productad');
createItem($(this));
countSaveItems();
}
});
$(".item-all .item-save").click(function() {
var elemId = $(this).data("id");
var existing = $(`.item-append div[data-id="${elemId}"]`);
if (existing.length > 0) {
existing.remove();
} else {
createItem($(this));
}
countSaveItems();
});
$(".item-append").on("click", ".close", function() {
var id = $(this).parent().data("id");
localStorage.removeItem(`test_${id}`);
$(`.item-save[data-id='${id}']`).removeClass('productad');
$(this).parent().remove();
countSaveItems();
});
.item-save {
position: relative;
display: block;
font-size: 14px;
margin: 5px;
padding: 5px;
background: #a5a5a5;
float: left;
text-align: center;
cursor: pointer;
}
.productad {
background: red;
color: #eee
}
.count {
display: block;
background: #cbcbcb;
float: left;
font-size: 15px;
padding: 5px 18px;
margin: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='item-all'>
<div class='item-save' data-id='123'>
Save1
</div>
<div class='item-save' data-id='124'>
Save2
</div>
<div class='item-save' data-id='125'>
Save3
</div>
<div class='item-save' data-id='126'>
save4
</div>
</div>
<div class='item-append'>
</div>
<div class='count'>0</div>
非常感谢任何帮助或建议
【问题讨论】:
-
您有两个
$(".item-all .item-save").click()电话。第一个处理程序仅针对原始 HTML 中的按钮运行。两个处理程序都针对原始按钮和.each()循环添加的按钮运行。 -
我不太明白你想做什么。但如果你要动态添加和删除元素,你可能应该阅读Event binding on dynamically-created elements
-
对不起,但这不是一个相关的解决方案,你能提供一个关于如何解决这个小问题的 jsFiddle 演示,我希望我能从你这边得到一些答案或解决方案????
-
等待您的答复先生
-
尝试提高你的问题的清晰度..
标签: javascript jquery function onclick append