如何防止在单击座位时出现重复,这样当我再次单击它时,它不会被附加,而是被连续删除/添加。
var ids = [];
$seatid = ids;
var status = "unavailable";
$(document).ready(function() {
var $div = $("<div id='form'></div>").appendTo(".appended"), code;
$('.seat').click(function(){
var id = jQuery(this).attr("id");
if ($(this).hasClass('available')){
code = jQuery(this).attr("id");
ids.push(code);
$div.append(code + "<br />");
console.log(code);
}else{
console.log('Failed');
console.log(id);
}
});
});发布于 2021-04-25 23:02:03
推送新ID后,您需要删除类"available“。我对JQuery不是很熟悉,但它看起来像这样:
if ($(this).hasClass('available')){
code = jQuery(this).attr("id");
ids.push(code);
$div.append(code + "<br />");
console.log(code);
//REMOVE AVAILABLE CLASS
$(this).removeClass("available");
}在运行else语句时,您可能需要重新添加该类(假设您想让一个“不可用”的座位在单击时变为“可用”)。
当您从“不可用”(在数组中)变为“可用”(不在数组中)时,您还需要一些逻辑来从数组中删除seatID。
发布于 2021-04-25 23:16:21
您可以使用Jquery的toggleClass()函数来完成此操作。
例如,如果你想删除或添加类"available“和"selected",下面的代码会工作得很好。
$('#x').click(function(){
$('#x').toggleClass('available').toggleClass('selected');
})另外,如果您想从数组中删除项。您可以使用以下代码。
const array = [12, 34, 10];
const index = array.indexOf(12);
if (index > -1) {
array.splice(index, 1);
}
// array = [34, 10]
console.log(array);最后,您的代码应该按如下方式更新。
var ids = [];
$seatid = ids;
var status = "unavailable";
$(document).ready(function() {
var $div = $("<div id='form'></div>").appendTo(".appended"), code;
$('.seat').click(function(){
var id = jQuery(this).attr("id");
if ($(this).hasClass('available')){
code = jQuery(this).attr("id");
ids.push(code);
$div.append(code + "<br />");
} else {
const index = ids.indexOf(code);
if (index > -1) {
ids.splice(index, 1);
}
console.log('Failed');
console.log(id);
}
});
});https://stackoverflow.com/questions/67254673
复制相似问题