jQuery: событие по второму подрят клику
Пользуюсб быблиотекой жаба скриптов jQuery.
Помогите, пожалуйста, решить задачу: эфект .slideUp() должен исполнятся после второго подрят нажатия на объект, причем событие даблклик не подходит, допустим юзер кликает по объекту №1, а потом по объекту №2, потом опять по №1 и снова по объекту №1 и только после второго подрят клика на объект №1 событие .slideUp() исполняется. Как это сделать в jQuery. |
Цитата:
|
|
а потом надо объяснить, зачем обрабатывать именно второй клик
|
var last = null;
document.onclick = function (event) {
event = event || window.event;
var target = event.target || event.srcElement;
if (target == last) {
ваша функцыя
}
last = target;
};
|
сенкс Matre, но немного не то, наверное я плохо объяснил.
в коде который Вы дали: - событие происходит после третего клика; - после первого клика на объект - щет кликов обнуляется если кликнуть вне объекта, но после двох подрят кликов - не обнуляется; А нужно, чтобы событие возникало при клику на объект два разы подрят, даблклик не подходит, и при клику вне объекта, допустим на другой объект, подщет кликов обнулялся. Например: кликаем на объект №1, потом на №2, потом на объект №1 и опять на №1 - и по второму клику (не даблклик) на объект №1 событие исполняется, тоесть когда кликнули первый раз на №1, потом на №2, то щет кликов по первому объекту обнуляются. Помогите в этом. |
Цитата:
Заодно хороший пример того, как надо делать сайты. |
Matre, на всякий))
jQuery почти кроссбраузерная библиотека, поэтому ваш код можно сократить до 3-х строчек.
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var $i = 0;
$('a').click(function(){
$('body').toggleClass($i++ % 2 && 'body');
return false;
});
});
</script>
<style type="text/css">
.body {background:red;}
</style>
<a href="#">click</a>
|
Цитата:
Цитата:
|
Помогите в следующем:
Есть код:
<script type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("a#object1").click(function(){
$(this).slideUp("slow");
return false;
});
$("a#object2").click(function(){
$(this).slideUp("slow");
return false;
});
});
</script>
<a href="#" id="object1">Объект №1</a>
<br>
<a href="#" id="object2">Объект №2</a>
НО, нужно чтоб эфект .slideUp() исполнялся после двох подряд кликов по объекту, причем если кликнуть один раз по "Объекту №1", а потом по "Объекту №2", то щет кликов по "Объекту №1" обнулялся. |
ondblclick?
|
x-yuri, я сознательно добавил слово "почти", потому как в последнее время мне очень часто приходится с ней работать и натыкаться на баги. С ходу могу сказать, что новый метод fadeToggle() даже в IE8 работает с глюками (если используется PNG-24 в некоторых случаях заливает альфаканал черным цветом), toggleSlide() - работает рывками. Если интересно, то у них есть bugtracker http://bugs.jquery.com/report (можно в timeline заглянуть)
PS: разубедите меня, что это вижу только я один o_O Цитата:
timyrio, я же вам нагладно показал первом сообщении как действовать (что же, пример грубой силы):
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var $i=$j=0;
$('#object1, #object2').click(function() {
if(this.id == 'object1') {
$i++%2 ? $(this).slideUp("slow") : $j=0;
}
else {
$j++%2 ? $(this).slideUp("slow") : $i=0;
}
return false;
});
});
</script>
<a href="#" id="object1">Объект №1</a><br />
<a href="#" id="object2">Объект №2</a>
упрощенная запись ;) :
this.id == 'object1' ? $i++%2 ? $(this).slideUp("slow") : $j=0 : $j++%2 ? $(this).slideUp("slow") : $i=0;
|
Цитата:
monolithed, я видел баги прямо у них на сайте (в демках), так что не надо меня убеждать. Просто твоя фраза про кроссбраузерность была ни к чему а вообще про jQuery... они ж по сути поставили перед собой задачу создать свой язык, а не дополнить и улучшить. Ну вот и разгребают последствия :) |
PS: разубедите меня, что это вижу только я один :)
|
Цитата:
Цитата:
Цитата:
просто Safari 5.0 гадит (модольное окно, которое появляется для добавлении ссылки - не является модальным, и можно прям через него кликать мышью ;) ) |
Цитата:
и в дополнение некоторые задачи решаются лучше не на уровне библиотеки (по-крайней мере не так, как в jQuery), например, показ элементов. У них там есть кусок, решающий, какой бы display поставить элементу, методом вставки нового такого же элемента в страницу. К тому же оно все равно может неправильный результат выдать |
1. Как обратится ко всем переменным в скрипте + исключить одну из них?
2. Как обратится ко всем переменным в скрипте, например имя которых начинается с "counter"? Переменные к которым нужно обратится, без перечисления каждой: counter1 counter2 counter3 counter4 counter5 и т.д. |
шаровакуумные вопросы продолжаются...
2) использовать массивы |
Цитата:
По Квери вопрос - просьба Подскажите уважаемые гуру , как переделать этот скрипт чтоб при достижении опр. количества кликов ,заморозить счет кликов /типа анбинд/ , так как скрипт начинает считать сначала при достижении заданного числа в count ++ % 2 ? var count=1 $('img').live('click',function () { count ++ % 2 ? } $('.dv ').addClass ('dfg'): $('.dv ').addClass ('dfg2') )} |
Цитата:
if(i >= 3) {
$(this).unbind(event);
}
|
Цитата:
|
Цитата:
var num=2
if(i >= num) {
$(this).unbind(event);
}
|
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$('a').click(function(i, j) {
return function(event) {
$('input').val(++i);
i >= j && $(this).unbind(event);
event.preventDefault();
};
}(0, 3));
});
</script>
<a href="#">click</a>
<input type="text" value="0" />
|
Цитата:
Развитие темы :) ..Мне уже удалось модернизировать код подсчета Попова с его видеоучебника ,так как его можна повторить с моим уровнем изучения Квери Но здесь уже обратная проблема _ Не удаеться сбросить анбинд по окончания счета //....$("#apDiv3") по нем был бинд клик. if(i >= 6) { //взято из документации Квери $(this).unbind('click', aClick)} // штопор : не хочет связывать обратно.Но без ифа-работает как полагаеться $("#apDiv5").click(function () { $("#apDiv3").bind('click', aClick) наверно нужно сварить $(this).unbind('click', aClick)} , а что с ним делать потом этому $("#apDiv5") не знаю :-? |
| Часовой пояс GMT +3, время: 04:06. |