Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2011, 15:43
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

2 события для ссылки :)
Помогите решить задачку плиз

Есть ссылка.

Надо чтобы она сробатывала на 2 события. click(); и dblclick();

при dblclick() юзер перенаправляется по ссылке.
при click() просто подгружается инфа через ajax но юзер не перенаправляется по ссылке.

Как отследить будет пользователь нажимать dblclick()? Если да?, то чтобы подгрузка инфы через ajax на click() не сробатывала?

Может кто подскажет оптимальный вариант?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2011, 17:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

то,что сразу возникло в голове :

$(elem).bind('click dblclick',function(e){

if(e.type == 'click'){
//подгружаем инфу на аяксе
return false;
}else {
//??? просто направляем?
}

})


НО firebug говорит,что возникает два click,перед одним dblclick.

считать одиночные клики и определять,делится ли кол-во на 2, не имеет смысла.

очевидно, придется делать либо через таймауты , либо считать количество кликов(?).


я попробовал через говнокодные таймауты.

гавнокодные,потому что :
когда делал через SetTimeout при одиночном клике , то на двойном клике (dblclick) таймаут не снимался (хз,почему.. таймаут был в window, ClearTimeout(t) ошибок не выдавал,но и не работал )


// HTML -- > <a href="http://google.ru/" id="a">google</a>


el = $(document.getElementById('a')),doo=false

el.bind('click dblclick',

function(e){
  
if(e.type=='dblclick') {
  
  doo = false;
  
  } else {
    
t = setTimeout(function(){
     if(doo) el.css('color','red');
//тут подгрузка через аякс
   },200)
doo = true;

  }
  return false; // чтобы не переходил по ссылке
  
}) // handler and bind end


протестил,у меня работает

сомневаюсь,что я написал этот код хорошо , потому что :
  • в window для каждой ссылки добавляется свой doo (можно сделать это через $.data(),или что-то подобное)
  • таймаут в 200ms - это время даблклика наглазок.(для полной уверенности это время нужно замерять?)
  • при одиночном клике некоторое время ссылка остается синей, а потом меняет цвет на красный

кстати, любимый гугл не дал ответа ))

Последний раз редактировалось melky, 28.03.2011 в 17:19.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2011, 16:10
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

Спасибо melky.

Попробую замутить по Вашему принципу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать ссылки из файла CSS корректными для всех директрорий сайта? GrEb (X)HTML/CSS 7 28.01.2020 12:56
События для вновь-вставленных тегов в DOM Mutagena jQuery 5 12.12.2011 19:56
Вопрос по создании функции для события com-meta jQuery 2 01.10.2010 14:59
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31