2013-07-04 5 views
0

Это, вероятно, простой вопрос, но, попробовав несколько методов, мне нужен совет.Применение класса show/hide для каждого div с различным контентом

У меня есть некоторые divs, которые, когда вы наводите на них курсор, покажет другой div (действующий как всплывающая подсказка) с различным содержимым для каждого div. JsFiddle, который я привел, показывает пример этого на красном div. То, что я пытаюсь достичь через jQuery, - это когда вы наводите курсор на любое другое div-шоу, которое разделяет контент.

На данный момент у меня есть 2 divs (синий и красный), и вы можете использовать его только для работы с красным с предоставленным jQuery. Как это будет работать для нескольких div?

Я бы легко использовал плагин всплывающей подсказки, но я использую этот пример в плагине пыльников, и они сильно конфликтуют с подсказками внутри слайдера.

http://jsfiddle.net/DeRx8/1/

$('.red').hover(function() { 
     $(".tooltip").fadeIn(250); 
    }, function() { 
     $(".tooltip").fadeOut(250); 
    }); 

Если кто-то может направить меня, с чего начать, что было бы здорово.

Благодаря

PS * Я буду иметь более 10 дивы красный, bluc, розовый, зеленый ЭСТ ..

+0

вы не можете добавить общий класс для всех из них? что-то вроде class = "red showtip", class = "blue showtip", class = "pink showtip", а затем любая из функций $ (this) .next() будет работать, и вы можете добавить больше цветов по мере необходимости – pathfinder

ответ

2

Вы можете сделать это

$(document).ready(function() { 
    $('.red,.blue').hover(function() {   
     $(this).next(".tooltip").fadeToggle(250); 
    }); 
}); 

http://jsfiddle.net/Sq5nP/

Если вы хотите поместить ю е подсказка с помощью CSS вы можете использовать прилегающий селектор + если ваша подсказка всегда будет следующий братом

.red+.tooltip { 
    display:none; 
    background-color:#993; 
    width:50px; 
    height:50px; 
    position:absolute; 
    right:60px; 
    top:40px; 
} 
.blue+.tooltip { 
    display:none; 
    background-color:blue; 
    width:50px; 
    height:50px; 
    position:absolute; 
    right:170px; 
    top:10px; 
} 

http://jsfiddle.net/yyrp7/

3

С несколькими селектором

$(document).ready(function() { 
    $('.red, .blue').hover(function() { 
     $(".tooltip").fadeIn(250); 
    }, function() { 
     $(".tooltip").fadeOut(250); 
    }); 
}); 

Demo Fiddle

+0

Thats great, но оба из div показывают «голубую коробку», а не красный div с красной информацией и синий с синей информацией :) Ваша демонстрация действительно имеет смысл! – user2212564

+0

Вы можете получить селектор $ (this) .. на основе которого вы можете показать, где именно вам нужно. –

+0

Так нет короткого способа написания кода для этого ?: http://jsfiddle.net/DeRx8/4/ спасибо за ответ ребята – user2212564

2

вы можете до

$(document).ready(function() { 
$('.red,.blue').hover(function() { 
    $(this).next(".tooltip").fadeIn(250); 
}, function() { 
    $(this).next(".tooltip").fadeOut(250); 
}); 
});  

http://jsfiddle.net/DeRx8/3/
UPDATE

$(document).ready(function() { 
$('.red,.blue').hover(function() { 
    var left=$(this).offset().left+$(this).width()-40; 
    $(this).next(".tooltip").css("left",left).fadeIn(250); 
}, function() { 
    $(this).next(".tooltip").fadeOut(250); 
}); 
});  

положение .tooltip
http://jsfiddle.net/DeRx8/5/

+0

Ваш ответ верный, но, посмотрев на код, возможно, придется его изменить, вы видите, что мне нужно, чтобы синяя подсказка hover div располагалась рядом с ней, так что это означает, что нужно ставить различные классы инструментов? – user2212564

+0

у вас есть абсолютная позиция, поэтому все .tooltip имеют одинаковую позицию, вы можете изменить HTML или установить позицию с помощью jQuery –

+0

@ user2212564, вы можете сделать это через css с помощью смежного селектора, если они всегда являются следующим родным братом http: // jsfiddle.net/yyrp7/ –

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