jquery - Onclick用jQuery替换div中的项目信息
问题描述
目标是为我的客户构建一个估算器界面。
所以我有几个盒子,里面有客户可以添加或删除的项目(域名、托管、...)。
所选项目的结果如下所示:
<ul class="calculator__sidebar-ul">
</ul>
我的代码的问题是每次用户单击一个项目时,它都会添加一个新行,而它应该替换原来的行。
我怎样才能改变这种行为?
$('input[name="hosting"]').click(function() {
value = $(this).data('value');
title = $(this).data('title');
if($('li #hosting').length == 1) { $('li #hosting').remove(); }
$('.calculator__sidebar-ul').append('<li id="hosting">'+ title +'<span class="calculator__sidebar-price"> + '+ value +' $</span></li>');
});
$('input[name="domain"]').click(function() {
value = $(this).data('value');
title = $(this).data('title');
if($('li #domain').length == 1) { $('li #domain').remove(); }
$('.calculator__sidebar-ul').append('<li id="domain">'+ title +'<span class="calculator__sidebar-price"> + '+ value +' $</span></li>');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h4>Hosting (1 year)</h4>
<div class="form__form-group">
<label class="radio-btn calculator__radio-btn">
<input class="radio-btn__radio" type="radio" data-value="0" data-title="No hosting" name="hosting">
<span class="radio-btn__radio-custom"></span>
<span class="radio-btn__label">No hosting
<span class="calculator__color_label">+ 0$</span>
</span>
</label>
<label class="radio-btn calculator__radio-btn">
<input class="radio-btn__radio" type="radio" data-value="200" data-title="Yes, add one hosting" name="hosting">
<span class="radio-btn__radio-custom"></span>
<span class="radio-btn__label">Yes, add one hosting
<span class="calculator__color_label">+ 200$</span>
</span>
</label>
</div>
<h4>Domain name (1 year)</h4>
<div class="form__form-group">
<label class="radio-btn calculator__radio-btn">
<input class="radio-btn__radio" type="radio" data-value="0" data-title="No domain" name="domain">
<span class="radio-btn__radio-custom"></span>
<span class="radio-btn__label">No domain
<span class="calculator__color_label">+ 0$</span>
</span>
</label>
<label class="radio-btn calculator__radio-btn">
<input class="radio-btn__radio" type="radio" data-value="50" data-title="Yes, add one domain" name="domain">
<span class="radio-btn__radio-custom"></span>
<span class="radio-btn__label">Yes, add one domain
<span class="calculator__color_label">+ 50$</span>
</span>
</label>
</div>
<ul class="calculator__sidebar-ul">
</ul>
谢谢。
解决方案
我会推荐更多这种方法。
有了这个,您将只更新该<ul>
部分而不复制您的 jquery 代码。
// Update the <ul> part:
<ul class="calculator__sidebar-ul hidden">
<li id="hosting"></li>
<li id="domain"></li>
</ul>
// Update the jQuery code
$('input[class="radio-btn__radio"]').click(function() {
name = $(this).attr('name');
value = $(this).data('value');
title = $(this).data('title');
$('#' + name).empty();
$('#' + name).html(title + '<span class="calculator__sidebar-price"> + ' + value + ' $</span>');
});
推荐阅读
- c# - 如何在 .Net Core 中根据环境控制 appsettings.json 部署
- javascript - 关闭过滤的 v-treeview 节点很慢,有很多项目
- php - 如何在 CakePHP 中将 ORM 结果分组为未读、最近和较旧?
- php - Symfony datatransfomers json 到数组以供选择类型
- javascript - 无法在 react-redux 中显示来自我的状态/道具的数据
- javascript - 使用 jquery 和 thymeleaf 如何创建动态按钮,每个按钮都有自己的事件侦听器
- python - 如何操作熊猫日期时间对象以获取上个月的最后日期
- c# - 在窗口窗体之间切换似乎不起作用
- excel - VBA 仅通过作品
- c# - chromedriver 错误 - 即使从所述 URL 替换 chromedriver 可执行文件,该错误仍然存在