Включить отключенные кнопки при нажатии div с помощью HTML, CSS, Jquery?

Я был бы признателен за любую помощь в решении проблемы с отключенной/включенной кнопкой, с которой я столкнулся. Я изучаю Jquery, поэтому решение этой проблемы будет для меня большим уроком. Я составил список пользователей, использующих классы div:

<div class = "userList">
    <div class = "user">Tom</div>
    <div class = "user">Ben</div>
    <div class = "user">George</div>
    <div class = "user">Tony</div>
</div>

Под списком пользователей у меня есть четыре кнопки:

<div class = "actions">
    <button id = "add" disabled = "disabled">Add</button>
    <button id = "block" disabled = "disabled">Block</button>
    <button id = "message" disabled = "disabled">Message</button>
    <button id = "exit">Exit</button>
</div>

Как видите, 3 из 4 кнопок по умолчанию отключены. Что я хочу сделать, так это щелкнуть пользователя, который выделит пользователя цветом фона и в то же время активирует 3 отключенные кнопки. Я также хотел бы настроить таргетинг на отдельные кнопки по идентификатору. Только имя пользователя, на которое я нажимаю, должно изменить цвет фона и вернуться к исходному цвету, как только я нажму на другое имя пользователя или за пределами div «userList».

Это полный HTML-код:

<div id = "wrapper">

    <div class = "userList">
        <div class = "user">Tom</div>
        <div class = "user">Ben</div>
        <div class = "user">George</div>
        <div class = "user">Tony</div>
    </div>

    <div class = "actions">
        <button id = "add" disabled = "disabled">Add</button>
        <button id = "block" disabled = "disabled">Block</button>
        <button id = "message" disabled = "disabled">Message</button>
        <button id = "exit">Exit</button>
    </div>

</div>

Это код CSS:

@charset "utf-8";
* {
    padding:0;
    margin:0;
    font-family:Arial, Helvetica, sans-serif;
    }

#wrapper {
    width:300px;
    min-height:100px;
    background-color:#ddd;
    margin:0 auto;
    padding:20px;
    }

.userList {
    border:1px solid #aaa;
    padding:20px;
    margin-bottom:20px;
    }

.user {
    background:#eee;
    line-height:28px;
    border:1px solid #aaa;
    margin-bottom:5px;
    padding-left:10px;
    }
    .user:hover {
        background:#06F;
        color:#fff;
        border:1px solid #000;
        }

.actions {}

Я надеюсь, что кто-то может помочь мне с этим! Это многому научит меня и, надеюсь, многих других людей.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
1 207
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что я правильно понял вашу проблему, возможно, что-то вроде этого:

$('.user').click(function(event){
    removeHighlight();
    $(event.target).addClass('highlight'); // Highlight selected item
    $('.btn-action').attr('disabled', false); // Enable action buttons
});

$(document).click(function(event) {
    // If clicked element does not have the class 'userList'
    // and does not have a parent element with a class 'userList'
    if (!$(event.target).hasClass('userList') && !$(event.target).parents('.userList').length) {
        removeHighlight();
        $('.btn-action').attr('disabled', true); // Disable action buttons
    }
});

function removeHighlight() {
    $('.user').each(function() { // Remove highlight class for any previously selected item
        $(this).removeClass('highlight');
    });
}

Добавьте это в свои стили:

.user.highlight {
    background:#06F;
    color:#fff;
    border:1px solid #000;
}

И добавьте класс btn-action к своим кнопкам.

Привет, большое спасибо за вашу помощь. Я ввел весь код и изменения, которые вы предложили, но по какой-то причине он не работает. Я связал js на внешнем листе, а также включил библиотеку jquery в раздел заголовка. Единственное изменение, которое я видел, когда я щелкаю за пределами div «userList», кнопка выхода отключается, потому что я добавил класс .btn-action для кнопки выхода в целях тестирования. Разделы не выделяются, а кнопки не активируются.

making5 10.04.2019 12:05

Ошибки консоли есть? Какую версию jQuery вы используете?

herondale 10.04.2019 12:10

Я связался с этим: <script src = "ajax.googleapis.com/ajax/libs/jquery/3.3.1/…> . Ошибок консоли нет.

making5 10.04.2019 12:14

Если есть ошибки консоли, пишите сюда. Также попробуйте сравнить свой код со скриптом, на который я ссылался выше, и посмотрите, есть ли какие-либо различия.

herondale 10.04.2019 12:16

Большое спасибо за ваше время. Это должно быть новая ошибка, потому что я точно скопировал ваш код, и он все еще не работает. Должно быть, я делаю что-то не так с моим файлом .js.

making5 10.04.2019 12:19

Во всяком случае, я буду играть с этим, пока это не работает. Ваша рабочий пример работает на 100% так, как я хочу. Большое спасибо за вашу помощь!

making5 10.04.2019 12:22

Можете ли вы попробовать включить https:// в свой скрипт, который ссылается на библиотеку jQuery? Итак, в основном: <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jque‌​ry.min.js"></script>

herondale 10.04.2019 12:28

Это уже так. Я также скопировал / вставил вашу ссылку. Все то же самое.

making5 10.04.2019 12:31

Привет, я только что получил его на работу. Все, что я сделал, это поместил внешний файл js непосредственно перед закрывающим тегом body. Большое спасибо!!! Это именно то, что я был после.

making5 10.04.2019 12:50

О да. На самом деле я собирался упомянуть об этом на случай, если добавление https:// не сработает (неверно прочитал ссылку). Важный урок, который следует усвоить, в идеале ваши скрипты должны быть размещены перед закрывающим тегом body, чтобы гарантировать, что все элементы были отрисованы до того, как будут обработаны любые ссылки на них в ваших скриптах. Молодец. Рад, что смог помочь. :)

herondale 11.04.2019 03:38

Другие вопросы по теме