|
|
|
| Здравствуйте, имеется скрипт на jquery такого плана
<script type="text/javascript">
function toggleActionsBlock(block) {
//$(".btn-slide").click(function(){
if($(block).is(":hidden")) {
$(block).fadeIn("fast");
this.focus();
//$(block).focus();
} else {
$(block).fadeOut("fast");
}
$(this).blur(function() {
$(block).fadeOut("fast");
});
//return false;
//});
}
</script>
<style type="text/css">
.blockActions {
position: absolute;
display: none;
background: #FFFEFB;
border: #FFCC33 1px solid;
padding: 3px 8px 4px 8px;
vertical-align:middle;
white-space:nowrap;
}
</style>
<a href="#" onclick="toggleActionsBlock('#blockActions');return false;">Действия</a>
<div id="blockActions" class="blockActions">
<ul>
<li><a href="#">Добавить</a></li>
<li><a href="#">Удалить</a></li>
<li><a href="#">Загрузить</a></li>
</ul>
</div>
|
всё работает хорошо, но хотелось чтобы появляющий блок при клике на пустое место исчезал, а не только по ссылке при активации.
Хотя если делать вне функции, this.focus(); выполняется и блок исчезает. Но пришлось сделать ввиде функции поскольку таких блоков(закладок) может быть больше одного, чтобы для каждого блока не повторять один и тотже код меняя только селект | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 22:24)
| | Надо вместе с показом блока навешивать функцию на событие клика по телу документа, коя закроет блок и отменит сама себя. | |
|
|
|
|
|
|
|
для: АЯ
(24.09.2010 в 22:32)
| | можно пример, просто в скрипте мало разбираюсь, пишу пока по мануалу | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 22:46)
| |
$(document.body).click(function() {
//ваши действия
});
|
| |
|
|
|
|
|
|
|
для: sim5
(24.09.2010 в 22:59)
| | подождите, так ведь у меня весь код находится в отдельной функции toggleActionsBlock() которая вызывается по ссылке
<a href="#" onclick="toggleActionsBlock('#blockActions');return false;">Действия</a>
в качестве аргумента передаётся id блока к примеру #blockActions | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 23:02)
| | И что, по клику тела страницы нельзя узнать стиль вашего блока, и если..., то... ?
И вообще, используя jQuiery, так писать - onclick="toggleActionsBlock('#blockActions');... это расточительность, коли она не оправдана. Да и учтите - кликнуть можно абсолютно по любому элементу на странице, что не хватает фантазии и ради клика используем якорь с return false? | |
|
|
|
|
|
|
|
для: sim5
(24.09.2010 в 23:05)
| | return false; вписывал когда не было в href решотки например href="" иначе была перезагрузка страници при клике на ссылку, сейчас сделал так href="#" и убрал return false;
понимаю может чтото не верно сделал, но пытался сделать проще, чтобы не писать для каждого нового блока отдельный код, а описав одну функцию, и ей передавай только id блока проще было бы, сейчас работает всё нормально, за исключением если кликнуть на ссылку и отвести курсор кликнув на любом месте окна блок не исчезает, исчезает если только повторно кликнуть по ссылке. Почемуто фокус не реагирует.
Смысл в том сделать чтото подобное как допустим на яндексе на главной странице где идёт перечисление разделов и не вошедшие находятся если кликнуть поссылке "ещё" то появиться блок(вкладка) где перечисляются остальные разделы, и если кликнуть на пустом месте то этот блок закроется, именно так и пытаюсь сделать | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 23:24)
| | Решетка, это атрибут тюремной камеры, и для чего вы его воткнули в якорь, я в курсе. Вот только использование якоря ради клика на странице, с добавлением ему решетки и return false, это либо от лени, либо от нехватки фантазии. ;-)
>чтобы не писать для каждого нового блока отдельный код, а описав одну функцию, и ей передавай только id блока проще было бы
Вот как раз при использовании jQuery, этого можно вообще не делать. Почитайте API ее, узнаете как. | |
|
|
|
|
|
|
|
для: sim5
(24.09.2010 в 23:32)
| | я понимаю, но просто сейчас нет времени разбираться, решил обратиться к вам за помощью, постепенно буду изучать, основную часть как я понимаю я сделал | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 23:45)
| | Значит тратить время на написание:
if($(block).is(":hidden")) {
$(block).fadeIn("fast");
this.focus();
//$(block).focus();
} else {
$(block).fadeOut("fast");
}
$(this).blur(function() {
$(block).fadeOut("fast");
});
| вы нашли, а потратить максимум минут 10-20 для того чтобы узнать как лучше написать, некогда? Открывайте, читайте, там и ребенку за пару часов разобраться можно. | |
|
|
|
|
|
|
|
для: web777
(24.09.2010 в 22:46)
| |
<html>
<head>
<script>
function myFunc_1 ()
{
var blc = document.getElementById ('block');
blc.style.display = '';
document.body.onmousedown = myFunc_2;
}
function myFunc_2 (evt)
{
var blc = document.getElementById ('block'), e = window.event || evt, o = e.target || e.srcElement;
if (blc == o) return;
document.body.onmousedown = null;
blc.style.display = 'none';
}
</script>
</head>
<body>
<span style="cursor: pointer; text-decoration: underline" onclick="myFunc_1 ()">Show</span>
<div id="block" style="width: 100px; height: 100px; background-color: red; display: none"></div>
</body>
</html>
|
JQuery - это наркотик.
А никак не лекарство. | |
|
|
|
|
|
|
|
для: АЯ
(25.09.2010 в 09:39)
| | >JQuery - это наркотик.
>А никак не лекарство.
это как понимать надо? | |
|
|
|