#jquery #button #hide #show #simplify
#jquery #кнопка #скрыть #показать #упростить
Вопрос:
<script>
$(document).ready(function () {
// for some reason the button hide has to be at the top
$("button").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("slow");
$("button").hide("fast");
});
// examples show hide
$(document).ready(function() {
$("a#holcomb").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("fast");
$("button").hide("fast")
$(".holcomb").slideDown(1500);
$("button#holcomb").show("fast")
});
});
$(document).ready(function() {
$("a#lunden").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("fast");
$("button").hide("fast")
$(".lunden").slideDown(1500);
$("button#lunden").show("fast")
});
});
$(document).ready(function() {
$("a#maggie").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("fast");
$("button").hide("fast")
$(".maggie").slideDown(1500);
$("button#maggie").show("fast")
});
});
$(document).ready(function() {
$("a#rosewood").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("fast");
$("button").hide("fast")
$(".rosewood").slideDown(1500);
$("button#rosewood").show("fast")
});
});
</script>
Мне просто нужна помощь в упрощении этого скрипта.
Все, что происходит, это то, что у меня есть несколько ссылок, и когда вы нажимаете на них, отображается div (с классом). Затем рядом со ссылкой также появляется кнопка, а затем, когда вы нажимаете, она закрывается (очевидно) или когда вы нажимаете на другую ссылку, она закрывает текущий открытый div и открывает другой div.
Комментарии:
1. Вы используете одно и то же
id
для нескольких элементов? Это недопустимый HTML, вы знаете2. нет, я использую разные элементы идентификатора для каждой кнопки, все остальное использует классы.
Ответ №1:
Простое лучшее применение классов сделало бы этот код проще, но работающим с тем, что у вас есть…
$(document).ready(function(){
$("button").click(function() {
$(".holcomb, .lunden, .maggie, .rosewood").hide("slow");
$("button").hide("fast");
});
$("a#holcomb, a#lunden, a#maggie, a#rosewood").click(function () {
$(".holcomb, .lunden, .maggie, .rosewood").hide("fast");
$("button").hide("fast");
$("." this.id).slideDown(1500);
$("button#" this.id).show("fast")
});
});
Ответ №2:
Добавьте класс ко всем элементам, над которыми вы хотите, чтобы эта функция отображения / скрытия работала, тогда вы сможете делать все это с:
var $allElements = $(".showHide");
$allElements.click(function () {
$allElements.hide("fast");
$(this).slideDown(1500);
/* you'd have to add some logic here for the matching button...
...perhaps give it an ID matching the link with a suffix of '-button'
or something */
});