Этот метод jQuery немного сложнее, но он хорошо работает для поддержания парения над двумя элементами. В этом примере предполагается, что вы используете два отдельных элемента DIV с идентификаторами «div1» и «div2». В этом примере также предполагается, что один элемент будет «триггером» (то есть, div1), а один элемент будет «ответом» (то есть, div2). Когда пользовательская мышь наводит курсор на триггер, отображается ответ. Когда пользовательская мышь оставляет и триггер, и ответ, ответ скрыт. Я использовал jQuery slideUp и slideDown в качестве эффекта перехода, но любой переход jQuery может заменить. Я также добавил немного отступов и стиля рамки, чтобы визуально продемонстрировать эту концепцию.
HTML:
<style>
#div1 { padding: 20px; border: 1px solid #000000; }
#div2 { padding: 20px; border: 1px solid #ff0000; }
</style>
<div id='div1'>Some Content</div>
<div id='div2'>Some Other Content</div>
Код JavaScript использует вызов setTimeout, чтобы добавить небольшую задержку, чтобы позволить мыши переходить из одного DIV в другой. Если два DIV расположены друг против друга, это время ожидания может быть очень маленьким. Изменение значения «hover_timeout» изменит допустимое время перехода.
ПРИМЕЧАНИЕ: использование 'mouseenter' и 'mouseleave' важно для этого примера. Дополнительные сведения об использовании mouseenter и mouseover см. В следующей статье: Jquery mouseenter () против mouseover ()
JAVASCRIPT:
var trigger_element = "#div1";
var response_element = "#div2";
var hover_timeout = 250; // milliseconds
function hideElement(waitTime)
{
setTimeout(function()
{
if (!$(trigger_element).is(":hover") && !$(response_element).is(":hover"))
{
$(response_element).slideUp();
}
},waitTime);
}
// trigger mouse enter
$(trigger_element).mouseenter (function()
{
$(response_element).slideDown();
});
// trigger mouse leave
$(trigger_element).mouseleave (function()
{
hideElement(hover_timeout);
});
// response mouse enter
$(response_element).mouseenter (function()
{
// do nothing
});
// response mouse leave
$(response_element).mouseleave (function()
{
hideElement(hover_timeout);
});