15.04.2011, 00:43
|
Новичок на форуме
|
|
Регистрация: 14.04.2011
Сообщений: 5
|
|
Выполнение события при наведение курсора мыши на элемент
Всем здрасти!
Прощу помощи!
Дело в том что есть скрипт выполнение события, при наведение курсора мыши на элемент <div class='cont'></div> всплывает скрытый элемент <div class='cont-hide'></div>, а когда отводишь от <div class='cont'></div>, то элемент <div class='cont-hide'></div> прячется. Мне это очень подходит. Проблема в том что, бы при переводе курсора мыши с элемент <div class='cont'></div> на элемент <div class='cont-hide'></div> то этот элемет прячиться а надо что б оставался видимым пока на нем будет курсор мыши. Как можно это исправить ? Может я плохо написал в чем проблема и как должно работать, поэтому прошу посмотреть как он работает.
Если к примеру вставить ссылку в всплывающий текст то неуспеваещь на неё нажать, он сразу прячеться.
Вот сам скрапт :
<style> div {width:500px; border:1px solid #393939} div.cont-hide {display:none} </style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script>
<script> $(document).ready(function(){ $('div.cont').mouseover(function(){ $(this).next().slideDown('slow'); }).mouseout(function(){ $(this).next().slideUp('slow'); }); }); </script>
<div class='cont'>Скачать песню</div><div class='cont-hide'>Для того что бы скачать песню перейдите по ссылке бла бла бла бла бла бла бла бла <a href="http://www.site.ru">Песни</a> бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла </div><br>А здесь может быть все что угодно от текста, картинок и до флеш (например флеш игры).
Последний раз редактировалось jQuery2011, 15.04.2011 в 23:30.
|
|
15.04.2011, 09:14
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от jQuery2011
|
Как можно это исправить ?
|
Как вариант... И без скриптов.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#txt {
position: relative;
height: 20px;
border: 1px solid;
}
#box {
position: absolute;
top: 100%;
left: 0;
width: 100px;
height: 100px;
background-color: orange;
display: none;
}
#txt:hover > #box {
display: block;
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id='txt'>
<div id='box'></div>
</div>
</body>
</html>
Т.е. появляющийся элемент должен быть внутри элемента, который его сделал видимым...
|
|
15.04.2011, 23:19
|
Новичок на форуме
|
|
Регистрация: 14.04.2011
Сообщений: 5
|
|
ksa, большое спасибо как вариант очень хороший, но я хотел бы как у меня в скрипте идет раскрытие, и все что ниже элементов просто вместе с ними опускается и подымается, а у Вас идет всплытие поверх всего. Может както можно подправить мой скрипт, или есть что то наподобии него ?
|
|
16.04.2011, 01:41
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#txt {
height: 20px;
border: 1px solid;
}
#box {
width: 100px;
height: 100px;
background-color: orange;
display: none;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script>
<script type="text/javascript">
function posMouse(e){
var mouX = 0, mouY = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
mouX = e.pageX;
mouY = e.pageY;
} else if (e.clientX || e.clientY) {
mouX = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
mouY = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
}
return {"x":mouX, "y":mouY}
}
$(document).ready(function(){
$('#txt').mouseover(function(){
$(this).next().slideDown('slow');
})
.mouseout(function(e){
var elem = $(this).next(), mou = posMouse(e);
if ((mou.x < elem.offset().left) || (mou.x > elem.offset().left + elem.width()) || (mou.y < elem.offset().top))
elem.slideUp('slow');
});
$('#box').mouseout(function(){
$(this).slideUp('slow');
});
});
</script>
</head>
<body>
<div id='txt'></div>
<div id='box'></div>
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
</body>
</html>
|
|
16.04.2011, 21:26
|
Новичок на форуме
|
|
Регистрация: 14.04.2011
Сообщений: 5
|
|
kostr, большое спасибо Вам, это то что нужно, но когда в сплывающем элементе есть текст тогда все нормально работает, а когда картинка или ссылка, в этом элементе то переведя курсор с текста на картинку или наоборот, то элемент сразу прячется хотя курсор с всплывающего элемента неотводищ, тоже самое происходит с ссылкой и текстом. То же самое если в всплывающем элементе идет текст и php скрипт выводящий форму обратной связи.
Посмотрите сами:
<html>
<head>
<style type="text/css">
div.txt {
height: 20px;
border: 1px solid;
}
div.box {
background-color: ;
display: none;
border: 1px solid;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script>
<script type="text/javascript">
function posMouse(e){
var mouX = 0, mouY = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
mouX = e.pageX;
mouY = e.pageY;
} else if (e.clientX || e.clientY) {
mouX = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
mouY = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
}
return {"x":mouX, "y":mouY}
}
$(document).ready(function(){
$('div.txt').mouseover(function(){
$(this).next().slideDown('slow');
})
.mouseout(function(e){
var elem = $(this).next(), mou = posMouse(e);
if ((mou.x < elem.offset().left) || (mou.x > elem.offset().left + elem.width()) || (mou.y < elem.offset().top))
elem.slideUp('slow');
});
$('div.box').mouseout(function(){
$(this).slideUp('slow');
});
});
</script>
</head>
<body>
<table border=0 cellpadding=3 cellspacing=1 width="100%">
<tr width=100%>
<td width=50%><div class='txt'>Описание</div>
<div class='box'><img src="" alt="Фотография" width="200" height="70"> Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла</div></td>
<td width=20%><div class='txt'>Оцените статью</div>
<div class='box'>А тут какой то php скрипт каторый выводит рейтинг статьи в виде картиног где можно проголосовать</div></td>
<td width=30%><div class='txt'>Добавить в избраное</div>
<div class='box'>Если вам понравилась статья то можете <a href="http://site.ru">Добавить в избранное</a> и быть в курсе самый новых обновлений на сайте</div></td>
</tr>
</table>
Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла
</body>
</html>
Последний раз редактировалось jQuery2011, 16.04.2011 в 21:36.
|
|
16.04.2011, 21:46
|
Новичок на форуме
|
|
Регистрация: 14.04.2011
Сообщений: 5
|
|
|
|
16.04.2011, 22:04
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
чуть не правильно прочитал написанное. увидел позже,что ты этуже проблему описываешь. с джиквери не дружу.
ответ твой здесь-
http://javascript.ru/tutorial/events/intro
смотри Порядок срабатывания событий и никакие велосипеды не понадобятся
Последний раз редактировалось dmitriymar, 16.04.2011 в 22:13.
|
|
16.04.2011, 22:07
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
<html>
<head>
<style type="text/css">
div.txt {
height: 20px;
border: 1px solid;
}
div.box {
background-color: ;
display: none;
border: 1px solid;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js' type='text/javascript'></script>
<script type="text/javascript">
function posMouse(e){
var mouX = 0, mouY = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
mouX = e.pageX;
mouY = e.pageY;
} else if (e.clientX || e.clientY) {
mouX = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
mouY = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
}
return {"x":mouX, "y":mouY}
}
$(document).ready(function(){
$('div.txt').mouseover(function(){
$(this).next().slideDown('slow');
})
.mouseout(function(e){
var elem = $(this).next(), mou = posMouse(e);
if ((mou.x < elem.offset().left) || (mou.x > elem.offset().left + elem.width()) || (mou.y < elem.offset().top))
elem.slideUp('slow');
});
$('div.box').mouseleave(function(){
$(this).slideUp('slow');
});
});
</script>
</head>
<body>
<table border=0 cellpadding=3 cellspacing=1 width="100%">
<tr width=100% valign="top">
<td width=50%><div class='txt'>Описание</div>
<div class='box'><img src="" alt="Фотография" width="200" height="70"> Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла</div></td>
<td width=20%><div class='txt'>Оцените статью</div>
<div class='box'>А тут какой то php скрипт каторый выводит рейтинг статьи в виде картиног где можно проголосовать</div></td>
<td width=30%><div class='txt'>Добавить в избраное</div>
<div class='box'>Если вам понравилась статья то можете <a href="http://site.ru">Добавить в избранное</a> и быть в курсе самый новых обновлений на сайте</div></td>
</tr>
</table>
Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла Бла бла бла бла бла бла бла бла бла бла бла бла бла блабла бла бла бла бла бла бла бла бла бла бла бла
</body>
</html>
|
|
16.04.2011, 22:09
|
Аспирант
|
|
Регистрация: 12.09.2010
Сообщений: 98
|
|
Просто заменила для блока с информацией mouseout на mouseleave. И поставила в строке таблицы valign="top", а то она прыгает.
|
|
17.04.2011, 01:39
|
Новичок на форуме
|
|
Регистрация: 14.04.2011
Сообщений: 5
|
|
Сообщение от kostr
|
Просто заменила для блока с информацией mouseout на mouseleave. И поставила в строке таблицы valign="top", а то она прыгает.
|
Большое Вам спасибо, теперь все работает как хотелось.
|
|
|
|