У меня на странице есть два скрытых DIV с кнопками для их переключения при необходимости. Одно из них — это меню навигации, а другое — форма входа. Я использовал JQuery для переключения красивого слайда вниз и вверх. Теперь я добавил немного JavaScript для переключения слайда, когда пользователь нажимает на соответствующие кнопки во второй раз или если он нажимает за пределами открытого DIV.
Проблема в том, что мой JavaScript переключает оба DIV, чтобы они появлялись и исчезали одновременно, независимо от того, какую кнопку вы нажимаете!
$('html').click(function (e) {
if (e.target.id == '#nav_btn') {
$("#navigation").slideToggle("slow");
} else {
$("#navigation").slideToggle("slow");
}
});
$('html').click(function (e) {
if (e.target.id == '#log_btn') {
$("#loginDIV").slideToggle("slow");
} else {
$("#loginDIV").slideToggle("slow");
}
});
Это, без сомнения, что-то действительно очевидное, но что я делаю не так?!
В e.target.id
не должно быть "#", должно быть if (e.target.id == 'nav_btn')
. И вы используете slideToggle
и в if
, и в else
, что так сбивает с толку.
Спасибо вам обоим. Я изменил цели с html
на #nav_btn
и #log_btn
соответственно (это была ошибка школьника) и удалил #
из обоих операторов e.target.id
. Теперь меню прокручиваются независимо при первом нажатии соответствующих кнопок и прокручиваются вверх при втором нажатии, но я потерял возможность прокручивать их вверх при нажатии в другом месте. Это близко, но не совсем там!
Проблема заключается в том, что оба других условия вызывают переключение DIV, независимо от того, какая кнопка нажата. Это происходит потому, что блок else не определяет какое-либо конкретное условие, поэтому он всегда запускается всякий раз, когда событие щелчка происходит на чем-либо, кроме конкретной кнопки.
$('html').click(function (e) {
e.preventDefault();
if (e.target.id == 'nav_btn') {
$("#navigation").slideToggle("slow");
} else {
$("#navigation").slideUp("slow"); // Hide navigation if anything else is clicked
}
if (e.target.id == 'log_btn') {
$("#loginDIV").slideToggle("slow");
} else {
$("#loginDIV").slideUp("slow"); // Hide loginDIV if anything else is clicked
}
});
Удалить все строки таблицы с помощью jQuery ссылка на вопрос: Удалите все строки таблицы с помощью jQuery Ответ. Вы можете удалить все строки из DataTable, используя метод .clear(), за которым следует .draw(), чтобы перерисовать таблицу без удаленных строк.
function clearTable() {
var table = $('#tb-articoli').DataTable();
table.clear().draw();
}
Вед... ты легенда! Огромное вам спасибо. Думаю, это легко, когда знаешь как, и, честно говоря... я не знала как! Я твой должник. Спасибо.
Код в блоках
if
иelse
одинаков, и вы нацеливаетесь на элементhtml
, поэтому в любом месте, куда вы щелкнете, будут переключаться оба элемента div.