【发布时间】:2021-06-29 22:59:31
【问题描述】:
我有一个动态的 jQuery 手风琴,它根据我按下的按钮添加不同的手风琴元素。到目前为止一切顺利,但我无法在每个元素内添加一个删除按钮,该按钮可以删除新创建的项目。这是我目前所拥有的:
$('#accordion').accordion();
$( function() {
$( "#accordion" ).accordion();
//ADD NEW EMPATHIZE ELEMENT TO ACCORDION WITH BUTTON 1
$('#addEmpathize').on('click', function() {
let newEmpathize = document.createElement('section');
let newDiv = document.createElement('div');
let newDeleteBtn = document.createElement('div')
let acc = document.getElementById('accordion');
//CREATES NEW TITLE
newEmpathize.innerHTML =
"<div class='empathize'>" +
"<div class='title'><i class=\"far fa-heart\"> </i>EMPATHIZE</div>" +
"<div class='push-right'>" +
"<span style='margin-right: 20px; font-size: 16px'><i class=\"far fa-times-circle\"></i></span>|<span style='margin-left: 20px; margin-right: 20px'><a><i class='fas fa-chevron-down rotate'></i></a></span>" +
"</div>" +
"</div>";
//CREATES CONTENT INSIDE ACCORDION SECTION
newDiv.innerHTML = "<div class='inline'><div class='card'>ITEM 1</div><div class = 'card' > ITEM 2 < /div><div class='card'>ITEM 3</div > < /div>";
//CREATES DELETE BUTTON
newDeleteBtn.innerHTML = "<div><button class='delete'>Delete</button></div>"
//APPENDS ELEMENTS TO ACCORDION AND REFRESHES
acc.appendChild(newEmpathize);
acc.appendChild(newDiv);
acc.appendChild(newDeleteBtn);
$("#accordion").accordion("refresh");
});
})
//DELETE FUNCTION
$('.delete').on('click', function() {
$(this).closest(section).remove();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
<body>
<div class="container">
<div class="btn-box">
<button id="addEmpathize" class="btn emp-btn"><i class="far fa-heart"> </i>Empathize</button>
<button id="addDefine" class="btn def-btn"><i class="fas fa-bullseye"> </i>Define</button>
<button id="addIdeate" class="btn idea-btn"><i class="far fa-lightbulb"> </i>Ideate</button>
<button id="addPrototype" class="btn prot-btn"><i class="fas fa-pencil-ruler"> </i>Prototype</button>
<button id="addTest" class="btn test-btn"><i class="fas fa-vial"> </i>Test</button>
</div>
<!-- START ACCORDION ELEMENT -->
<div>
<div id="accordion"></div>
</div>
<!-- END ACCORDION ELEMENT -->
</div>
</body>
如您所见,最后几行是删除最近部分的功能。但是,它不会删除创建的元素,而是会破坏任何创建的新部分。知道如何解决这个问题吗?
我只显示其中一个按钮的代码,因为它们的工作原理几乎相同,只是手风琴内容不同。重要的是它们都为 SAME 手风琴添加了不同的元素。
【问题讨论】:
标签: javascript jquery dynamic accordion