我最近获得了一大堆代码来维护。我的前端体验有限,但使用
let rand = Math.round(Math.random() * 9999999999);
和
checkbox.setAttribute('data-id', rand);
看起来很奇怪。
有问题的功能:
/**
** Cancel edits in Panel
**
**/
cancel( scope ) {
console.log("--------------------------------");
console.log("Synapse: checkbox");
let self = this;
$('input[type="checkbox"]').each(function() {
let rand = Math.round(Math.random() * 9999999999);
let checkbox = document.createElement('i');
checkbox.className = "fal fa-square checkbox";
checkbox.setAttribute('data-id', rand);
$('input[type="checkbox"]').parent().on('click', function () {
if ($(this).find('[data-fa-processed]').hasClass('fa-check-square')) {
$('#' + $(checkbox).data('id')).prop('checked', false);
} else {
$('#' + $(checkbox).data('id')).prop('checked', true);
}
$(this)
.find('[data-fa-processed]')
.toggleClass('fa-check-square')
.toggleClass('fa-square');
}).addClass('checkbox-parent');
$(this).attr('id', rand).hide().before(checkbox);
});
// On click, select the hidden checkbox and change the square to a check-square
}
答案 0 :(得分:0)
开发人员发现这是一种独特的方式。每个复选框图标<i>
的标识符。它会隐藏复选框并显示一个图标,并相互关联&#34; rand&#34;数。 (复选框中的id
属性和图标中的data-id
属性。
添加了唯一标识符,以便为其提供参考。
对我来说,这是一种糟糕的方法(我同意Rory McCrossan):
好的,他正在使用一个随机的大号......但是,永远不会是两个具有相同价值的id?!这可能发生。
点击事件正在forEach循环中添加。可能这个事件多次被创造出来。这可能导致行为不端。
他可以利用他创建的与复选框和父级相关的位置。我认为,这样就可以在没有data-id的情况下在需要时更新和切换类。