2013-09-24 3 views
0

У меня есть несколько img-иконок, которые ссылаются на различные внешние сайты (электронная почта, facebook, twitter и т. Д.) Onclick, и я пытаюсь, чтобы они отображали скрытый текст в другом div при наведении.jquery adjust div при наведении на другой div

Второе звено скрипки в this thread совершающее что-то похожее на то, что я хочу сделать с помощью CSS, однако я пытаюсь оживить показать/скрыть с помощью JQuery slideToggle(), который я уже реализован в других частях страницы, поэтому css не будет делать.

This thread похоже, что у меня есть то, что я ищу, но я использовал его как шаблон, и пока ничего не работает, и я в тупике. Вот мой код, любые предложения были бы очень полезны:

$('div.tooltip').hide(); 
$('img.tooltip').hover(function() { 

    which = $(this).attr("class"); 
    selector = 'div.' + which; 
    slide = $(selector).slideToggle(); 
    console.log(slide); 
}); 

p.s. - Я подумал, может быть, проблема в том, что когда я звоню slideToggle(), он не отменяет вызов hide() в строке 1, но когда я прокомментировал этот вызов и вместо этого изменил что-то простое, как цвет шрифта, все равно нет кубиков.

редактировать: для разъяснения img и его соответствующие div доли идентичных имена классов (например img.tooltip email должен вызывать div.tooltip email и т.д.), поэтому я использую «который» и «селектор».

+3

создать скрипку пожалуйста – SarathSprakash

+0

Есть ли у элемента img какие-либо другие классы? Если это ваше значение 'selector' будет выглядеть так:' 'div.tooltip otherClass andAnotherone andSoOn''. Это не будет действительным селектором jQuery, но его трудно узнать, не увидев разметку. –

ответ

0

ли

slide = $('div.tooltip').slideToggle(); 

не работает? Я смущен, почему вам нужны первые две строки этой функции.

+0

Это работает, но он показывает каждую подсказку, когда я просто хочу показать тот, который принадлежит значку, который запускает slideToggle. Подумайте, что моя проблема связана с вложением css, которое @DGS описывает – wkd

2

Ваша проблема более чем вероятна с помощью строки which = $(this).attr("class");, которая вернет пространственный список всех классов, которые имеет этот элемент. Так как изображение имеет как минимум .tooltip, это означает, что selector будет выглядеть примерно как div.tooltip someotherclass, который будет искать элемент типа someotherclass, который является потомком div с подсказкой класса. Поскольку не будет типа элемента someotherclass, это ничего не вернет.

Edit:

Если вы используете только два класса, как дела в вашем вопросе вы можете изменить свой код

$('img.tooltip').hover(function() { 
    which = $(this).attr("class").replace('tooltip', '').replace(' ',''); 
    selector = 'div.' + which; 
    slide = $(selector).slideToggle(); 
    console.log(slide); 
}); 

который удалит tooltip класса из строки класса делает which = 'email', а не which = 'tooltip email'

+0

Упс, возможно, у меня только что произошла основная синтаксическая ошибка - я хочу, чтобы 'img' имел ** оба **' tooltip' и 'email/facebook/etc', и зависание должно «slideToggle» 'div' с идентичным именем класса. Разделяет ли классы w/пространство не так? – wkd

+0

нет, потому что когда вы делаете '$ (this) .attr (" class ")', он вернет строку, содержащую все классы этого элемента в формате, разделенном пробелом.Мой ответ не избавляется от класса 'tooltip' от элемента, который он просто игнорирует при поиске класса – DGS

+0

OK - я не понимаю, почему получение строки, разделенной пробелами, было бы плохо, если бы я добавлял эту строку на '' div.'', как я делаю с 'селектором'. Это решение вызывает для меня ошибку, похоже, что вместо «tooltip» вставлено пространство, поэтому селектор заканчивается как 'div. email'. Я никогда не занимался скрипкой, и у меня возникли проблемы с ее работой, но вот один из них, если это помогает: http://jsfiddle.net/B5s56/ – wkd

Смежные вопросы