#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Я использую некоторый код для скрытия / раскрытия таблиц. Все хорошо, за исключением того, что я не могу найти, как остановить все таблицы, выполняемые этим кодом. У меня есть таблица 1, таблица 2 и таблица X, я хочу, чтобы таблица X присутствовала всегда, однако я не могу понять, как это сделать.
<!DOCTYPE HTML">
<html>
<head>
<link rel="stylesheet" type="text/css"/>
<title>Add device</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#myDropdown").change(function(){
target = $(this).val();
$(".tables").hide();
if(target != 'none'){
$("#" target).show();
}
return false;
});
});
</script>
<style type="text/css">
table{
width:100%;
display:none;
}
#content{
width:100%;
}
</style>
</head>
<table id='none' class='tables' width='100%'>
<tr>
<td>**********TABLE X***********</td>
</tr>
</table>
<body>
<div id="content">
<p align = 'center'>
Are you adding a chassis or a module?</br>
<select id="myDropdown">
<option selected value="t3">Please Select</option>
<option value="t1">Chassis</option>
<option value="t2">Module</option>
</select>
</p>
<table id='t1' align='center' class='tables'>
*********TABLE 1***************
</table>
<table id='t2' align='center' class='tables'>
*********TABLE 2***************
</table>
</form>
</body>
</html>
Я пытался поиграть с классами и идентификаторами, но безрезультатно.
Комментарии:
1. $(«.tables»).hide(); скроет что-либо с помощью класса tables .
2. Скрыть идентификатор или использовать определенные классы!
3. Скройте таблицы правильными таблицами с помощью CSS. Ваш HTML-код плохо сформирован.
4. @DaveBriand Даже когда я помещаю таблицу в другой класс или без класса, она все равно скрыта
5.Одна таблица снаружи
<body>
, без начального<form>
тега? Таблица без<td>
<tr>
этого кажется совершенно недопустимой
Ответ №1:
Добавьте класс в таблицу, которую вы не хотите скрывать, и используйте .not
селектор css.
Код:
HTML:
<table id='none' class='tables no-hide-please' width='100%'>
<tr>
<td>**********TABLE X***********</td>
</tr>
</table>
<div id="content">
<p align = 'center'>
Are you adding a chassis or a module?</br>
<select id="myDropdown">
<option selected value="t3">Please Select</option>
<option value="t1">Chassis</option>
<option value="t2">Module</option>
</select>
</p>
<table id='t1' align='center' class='tables'>
<tr>
<td>*********TABLE 1***************</td>
</tr>
</table>
<table id='t2' align='center' class='tables'>
<tr>
<td>*********TABLE 2***************</td>
</tr>
</table>
JS:
$(document).ready(function(){
$("#myDropdown").change(function(){
target = $(this).val();
$(".tables:not(.no-hide-please)").hide();
if(target != 'none'){
$("#" target).show();
}
});
});
CSS:
table{
width:100%;
//display:none;
}
#content{
width:100%;
}
Комментарии:
1. Это блестяще, как я мог бы показать таблицу x, пока таблица 1 и таблица 2 скрыты при загрузке
2. Это код, который я использовал для решения своей проблемы, однако я раскомментировал: display:none; и добавил: #none{display:table} В результате чего таблица x загружалась при запуске, а две другие скрывались
Ответ №2:
Вы скрываетесь на основе класса, а не идентификатора. Класс используется для каждой таблицы, поэтому все ваши таблицы скрыты.
Измените селектор jQuery на привязку к идентификатору таблицы, которую вы хотите скрыть, и только она будет скрыта.
Чтобы скрыть первую и вторую таблицы, вы можете выбрать обе.
$("#t1, #t2").hide();
Или создайте класс, который вы можете повторно использовать, под названием «hidable» и показать / скрыть это. Затем вы можете применить этот класс к таблицам, к которым вы хотите применить это поведение.
$(".hideable").hide();
<table id='t1' align='center' class='tables hideable'>
*********TABLE 1***************
</table>
<table id='t2' align='center' class='tables hideable'>
*********TABLE 2***************
</table>
Ответ №3:
Добавьте класс к таблицам, которые вы хотите видеть постоянно:
<table id='none' class='tables no_hide' width='100%'>
Измените свой селектор jQuery на этот:
$(".tables:not(.no_hide)").hide();
Ответ №4:
$('.tables:not(#none)').hide();
Комментарии:
1. Потому что это плохая практика. Он также будет привязан ко всем таблицам, созданным в будущем, и их скрытие может быть нецелевым. Лучше всего привязываться к фактическим таблицам, которые вы хотите скрыть, а не просто скрывать все, кроме одной, что ненадежно.
2. В вопросе нет ничего, связанного с таблицами, созданными в будущем