在电商网站中,需要实现送货地址选择的功能,这里提供两种比较传统的思路。
方法一:使用Ajax+CSS+JQuery提交
HTML文件
<br />
<h2 id="address_select">选择收货地址</h2>
<hr />
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>电话</th>
<th>省</th>
<th>城市</th>
<th>区县</th>
<th>街道</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<tr class="address">
<td>1</td>
<td>yongqiang</td>
<td>18910008000</td>
<td>内蒙古</td>
<td>乌兰察布</td>
<td>集宁</td>
<td>某小区 15号楼 一单元 203</td>
<td><a href="/addresses/1">Show</a></td>
<td><a href="/addresses/1/edit">Edit</a></td>
<td><a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/addresses/1">Destroy</a></td>
</tr>
<tr class="address">
<td>2</td>
<td>lily</td>
<td>18910002000</td>
<td>河北</td>
<td>石家庄</td>
<td>裕华区</td>
<td>裕祥街22号</td>
<td><a href="/addresses/2">Show</a></td>
<td><a href="/addresses/2/edit">Edit</a></td>
<td><a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/addresses/2">Destroy</a></td>
</tr>
</tbody>
</table>
CSS文件。样式变换依赖class的增加与删除
.selected {
color: white;
background-color: skyblue;
}
** js文件。获取选择的ID,样式变换 **
// check.js
$(function() {
// address_id gets the id of address which is selected by user.
var address_id;
// get address_id
$(".address").click(function(event) {
//console.log($(this).children('td').eq(0).text())
$(".address").removeClass('selected')
$(this).addClass('selected');
address_id = $(this).children('td').eq(0).text();
});
// for debug
$("#address_select").click(function(event) {
/* Act on the event */
alert(address_id);
});
});
方法二、使用html中select
实现地址的选择比较简单的做法是直接使用html自带的select功能。 这样不会引入js处理的一些不必要的问题。
两种效果对比
方法一实现起来较为复杂,展示效果及体验相对好,定制化程度高,引入了不确定性的js问题。 这里实现上还有一些问题,切换controller后,再点击地址,无效没有反应。京东应该是这种方式。
方法二实现容易,基本没有依赖,html原生自带。
我的选择:能满足功能的情况下,还是使用html原生的select方法。