2 回答

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
要完成這項(xiàng)工作,您可以在 each中添加一個(gè)span沒(méi)有內(nèi)容的元素。然后,您可以創(chuàng)建一個(gè)函數(shù),每次添加或刪除.label.blockspan.block
我還強(qiáng)烈建議您克隆元素而不是在 JS 邏輯中添加大量 HTML,因?yàn)檫@違反了關(guān)注點(diǎn)分離原則,因?yàn)閷?JS 與 HTML 聯(lián)系得太緊密。在您的情況下,這可以通過(guò)簡(jiǎn)單地添加一個(gè)額外的類(lèi)來(lái)完成,該類(lèi).block包含textarea元素。嘗試這個(gè):
$('.add').click(function() {
let $lastBlock = $('.block.step:last');
let $clone = $lastBlock.clone().insertAfter($lastBlock);
$clone.find('textarea').val('');
updateStepCounts();
});
$('.optionBox').on('click', '.remove', function() {
if ($('.block.step').length > 1) {
$(this).closest('.block').remove();
updateStepCounts();
}
});
let updateStepCounts = () => $('.block label span').text(i => i + 1);
updateStepCounts();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="optionBox">
<div class="block step">
<div class="form-group">
<label for="exampleFormControlTextarea1">Step <span></span></label>
<textarea class="form-control rounded-0" id="exampleFormControlTextarea1" rows="10"></textarea>
</div>
<span class="remove">Remove</span>
</div>
<div class="block">
<span class="add">Add Option</span>
</div>
</div>

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
我刪除了div.block周?chē)摹疤砑舆x項(xiàng)”span并.append在新添加的div.block-container元素上使用,而不是在選項(xiàng)容器底部.before添加下一個(gè)。textarea我認(rèn)為這在語(yǔ)義上讀起來(lái)更好一些。
同樣使用字符串插值,我可以插入 + 1 的總數(shù)div.block來(lái)跟蹤頁(yè)面上可見(jiàn)的文本區(qū)域的數(shù)量。
希望這可以幫助。
$('.add').click(function () {
const numberOfBlocks = $(".block").length;
$(".block-container")
.append(`
<div class="block">
<div class="form-group">
<label for="exampleFormControlTextarea1">Step ${numberOfBlocks + 1}</label>
<textarea class="form-control rounded-0" id="exampleFormControlTextarea1" rows="10"></textarea>
</div>
<span class="remove">Remove</span>
</div>`
);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="optionBox">
<div class="block-container">
</div>
<span class="add">Add Option</span>
</div>
添加回答
舉報(bào)