Показать сообщение отдельно
  #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.
Ответить с цитированием