У меня есть несколько img-иконок, которые ссылаются на различные внешние сайты (электронная почта, facebook, твиттер и т.д.) Onclick, и я пытаюсь показать им скрытый текст в другом div
на hover.
Вторая скриптовая ссылка в этом потоке выполняет нечто похожее на то, что я хочу делать с CSS, однако я пытаюсь оживить show/hide с помощью jQuery slideToggle()
, который я уже реализовал в других частях страницы, поэтому css не будет делать.
Кажется, что этот поток имеет то, что я ищу, но я использовал его как шаблон и ничего не работал до сих пор, и я в тупике. Здесь мой код, любые предложения были бы высоко оценены:
$('div.tooltip').hide();
$('img.tooltip').hover(function() {
which = $(this).attr("class");
selector = 'div.' + which;
slide = $(selector).slideToggle();
console.log(slide);
});
ps - Я думал, может быть, проблема в том, что когда я вызываю slideToggle()
он не slideToggle()
вызов hide()
в строке 1, но когда я прокомментировал этот вызов и вместо этого изменил что-то простое, как цвет шрифта, до сих пор нет кубиков.
edit: для уточнения, img
и его соответствующие div
имеют одинаковые img.tooltip email
(например, img.tooltip email
должна запускать div.tooltip email
и т.д.), поэтому я использую "какой" и "селектор".
Ваша проблема более чем вероятна с линией, which = $(this).attr("class");
который будет возвращать пробельный список всех классов, которые имеет этот элемент. Так как изображение имеет хотя бы .tooltip
это означает, что selector
будет выглядеть как div.tooltip someotherclass
который будет искать элемент типа someotherclass
который является потомком div с подсказкой класса. Поскольку, скорее всего, не будет типа элемента какого-либо someotherclass
это ничего не вернет.
Редактировать:
Если вы используете только два класса, например, в своем вопросе, вы можете изменить свой код на
$('img.tooltip').hover(function() {
which = $(this).attr("class").replace('tooltip', '').replace(' ','');
selector = 'div.' + which;
slide = $(selector).slideToggle();
console.log(slide);
});
который удалит класс tooltip
из строки класса, which = 'email'
составляет which = 'email'
а не which = 'tooltip email'
Есть ли
slide = $('div.tooltip').slideToggle();
не работа? Я смущен, почему вам нужны первые две строки этой функции.
img
были иtooltip
и классыemail/facebook/etc
, и при наведенииslideToggle
мыши долженslideToggle
div
с идентичным именем класса. Разве разделение классов с пробелом не делает этого?$(this).attr("class")
он возвращает строку, которая содержит все классы этого элемента в формате с разделением пробелами. Мой ответ не избавляет классtooltip
от элемента, который он просто игнорирует при поиске класса