Я делаю проект, в котором у меня проблемы с Jquery.
Описание: У меня есть две таблицы.
Первая таблица имеет 3 типа пользователя, а вторая таблица имеет имя пользователя с типом пользователя.
Что я пытаюсь: В проекте Если я выбрал Тип пользователя: поставщик, то все пользователи второй таблицы, чей поставщик выбран, и меняют цвет фона на красный.
$(".RTtbl .fa").click(function () {
$(this).find(".fa").addClass(".bg-info");
});.RTtbl{
background:#fcffe5;
}
td{cursor: pointer;}
.bg-info{
background:red;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"><link href = "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<h5>
Select User Type
</h5>
<table class = "table table-bordered RTtbl " style = "font-size:14px;">
<tr>
<td style = "width:33.33%;">
<i class = " fa fa-user"</i>
User
</td>
<td style = "width:33.33%">
<i class = "fa fa-user-o" ></i>
Vendor
</td>
<td style = "width:33.33%">
<i class = "fa fa-user-circle-o" ></i>
Celeb
</td>
</tr>
</table>
<h5>
Selected Users
</h5>
<table class = "table table-bordered Fatbl">
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
</table>


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


$(".menu").click(function () {
var elem = $(this).find('.fa');
//console.info($(this));
$(".Fatbl").find('.fa').parent().removeClass("bg-info");
$(".Fatbl").find(`.${elem.attr('class').split(" ")[1]}`).parent().addClass("bg-info");
$('.menu').removeClass("bg-info");
elem.parent().addClass("bg-info");
});.RTtbl{
background:#fcffe5;
}
td{cursor: pointer;}
.bg-info{
background:red;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"><link href = "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<h5>
Select User Type
</h5>
<table class = "table table-bordered RTtbl" style = "font-size:14px;">
<tr>
<td class = "menu" style = "width:33.33%;">
<i class = "fa fa-user"></i>
User
</td>
<td class = "menu" style = "width:33.33%">
<i class = "fa fa-user-o"></i>
Vendor
</td>
<td class = "menu" style = "width:33.33%">
<i class = "fa fa-user-circle-o"></i>
Celeb
</td>
</tr>
</table>
<h5>
Selected Users
</h5>
<table class = "table table-bordered Fatbl">
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
</table>отредактировано соответственно, пожалуйста, проверьте, правильно это или нет.
Это код JQuery для достижения ответа:
$("#user").click(function(){
$('.fa').parent('td').removeClass('bg-info bg-success bg-warning');
$('.fa-user').parent('td').addClass('bg-info');
});
$("#vendor").click(function(){
$('.fa').parent('td').removeClass('bg-info bg-success bg-warning');
$('.fa-user-o').parent('td').addClass('bg-success');
})
$("#celeb").click(function(){
$('.fa').parent('td').removeClass('bg-info bg-success bg-warning');
$('.fa-user-circle-o').parent('td').addClass('bg-warning');
}).RTtbl{
background:#fcffe5;
}
td{cursor: pointer;}
.bg-info{
background:red;
}
.bg-success{
background:green;
}
.bg-warning{
background:orange;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"><link href = "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<h5>
Select User Type
</h5>
<table class = "table table-bordered RTtbl " style = "font-size:14px;">
<tr>
<td id = "user" style = "width:33.33%;">
<i class = " fa fa-user"></i>
User
</td>
<td id = "vendor" style = "width:33.33%">
<i class = "fa fa-user-o" ></i>
Vendor
</td>
<td id = "celeb" style = "width:33.33%">
<i class = "fa fa-user-circle-o" ></i>
Celeb
</td>
</tr>
</table>
<h5>
Selected Users
</h5>
<table class = "table table-bordered Fatbl">
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
</tr>
</table>предположим, если вам нужен один цвет для активного
$(".RTtbl td").click(function(){
$('td').removeClass('bg-info');
var clName = $(this).children('i').attr('class');
clName = clName.split(' ');
$('.'+clName[1]+'').parent('td').addClass('bg-info');
$('.'+clName[1]+'').parent('td').siblings('td').addClass('bg-info');
$(this).siblings().removeClass('bg-info');
});.RTtbl{
background:#fcffe5;
}
td{cursor: pointer;}
.bg-info{
background:red;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"><link href = "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<h5>
Select User Type
</h5>
<table class = "table table-bordered RTtbl " style = "font-size:14px;">
<tr>
<td id = "user" style = "width:33.33%;">
<i class = "fa fa-user"></i>
User
</td>
<td id = "vendor" style = "width:33.33%">
<i class = "fa fa-user-o" ></i>
Vendor
</td>
<td id = "celeb" style = "width:33.33%">
<i class = "fa fa-user-circle-o" ></i>
Celeb
</td>
</tr>
</table>
<h5>
Selected Users
</h5>
<table class = "table table-bordered Fatbl">
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o" ></i>
Kisan </td>
<td>
Kisan </td>
</tr>
</table>Спасибо, у меня есть <tr> <td></td> <td> </td> <td> </td> </tr>. Если я хочу добавить цвет фона в TR, мой Jquery будет........
@Pritesh проверьте второй фрагмент обновленного ответа
Я считаю, что это то, что вы хотите сделать: http://jsfiddle.net/mer29tsv/16/
Пожалуйста, дайте мне знать, соответствует ли результат ожидаемому. Когда вы используете $(this).find(), вы находите в ячейке первой таблицы и применяете к ней класс.
Вам нужно применить его ко второй таблице, используя соответствующее имя класса. Кроме того, использование атрибутов данных было бы лучше для подключения верхней таблицы к нижней таблице, код, который я приложил, будет работать только в том случае, если имя класса значка имеет определенный формат.
Мне пришлось изменить имя класса bg-info, потому что оно уже где-то объявлено, что дает синий цвет фона.
// you need to click the tabel cell, not the icon
$(".RTtbl td").click(function() {
// Get the icon class
let cls = $(this).find('i').attr('class');
// Reset selection
$(this).siblings().removeClass('bg-info');
$(`.Fatbl i`).parent().removeClass('bg-info');
// Select the cells accordingly
// Do not write ".bg-info" because it's for query onlyu
$(this).addClass('bg-info');
$(`.Fatbl i[class = "${cls}"]`).parent().addClass('bg-info');
});.RTtbl {
background: #fcffe5;
}
td {
cursor: pointer;
}
/* bg-info is a built-in bootstrap class, not recommended to change it */
/*
.bg-info {
background: red;
}
*/<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link href = "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" integrity = "sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin = "anonymous">
<h5>
Select User Type
</h5>
<table class = "table table-bordered RTtbl " style = "font-size:14px;">
<tr>
<td style = "width:33.33%;">
<i class = "fa fa-user" </i> User
</td>
<td style = "width:33.33%">
<i class = "fa fa-user-o"></i> Vendor
</td>
<td style = "width:33.33%">
<i class = "fa fa-user-circle-o"></i> Celeb
</td>
</tr>
</table>
<h5>
Selected Users
</h5>
<table class = "table table-bordered Fatbl">
<tr>
<td> <i class = "fa fa-user-circle-o"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-circle-o"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user"></i> Kisan </td>
</tr>
<tr>
<td> <i class = "fa fa-user-o"></i> Kisan </td>
</tr>
</table>
При щелчке пользователя в первой таблице также выделяется тип пользователя второй таблицы.