#css #html #button #onclick
#css #HTML #кнопка #onclick
Вопрос:
Я был бы признателен за любую помощь в решении проблемы с отключенной / включенной кнопкой, с которой я столкнулся. Я изучаю 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 {}
Я надеюсь, что кто-нибудь сможет мне в этом помочь! Это многому научит меня и, надеюсь, многих других людей.
Ответ №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') amp;amp; !$(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
класс к своим кнопкам.
Комментарии:
1. Привет, большое спасибо за вашу помощь. Я ввел весь код и предложенные вами изменения, но по какой-то причине он не работает. Я связал js на внешнем листе, а также включил библиотеку jquery в раздел head. Единственное изменение, которое я видел, когда я нажимал за пределами div ‘UserList’, кнопка выхода отключается, потому что я добавил класс .btn-action к кнопке выхода для целей тестирования. DIVS не подсвечиваются, а кнопки не включаются.
2. Есть ли какие-либо ошибки консоли? Какую версию jQuery вы используете?
3. Я ссылался на это: Ошибок консоли нет.
4. Если есть ошибки консоли, пожалуйста, опубликуйте их здесь. Также попробуйте сравнить свой код со скрипкой, на которую я ссылался выше, и посмотреть, есть ли какие-либо различия.
5. Большое спасибо за ваше время. Должно быть, это ошибка newb, потому что я точно скопировал ваш код, и он все еще не работает. Должно быть, я делаю что-то не так с моим файлом .js.