Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2011, 08:07
Интересующийся
Отправить личное сообщение для gizmomy Посмотреть профиль Найти все сообщения от gizmomy
 
Регистрация: 10.02.2010
Сообщений: 14

Как определить есть ли click() у элемента?
Собственно весь вопрос в заголовке.
Немного дополню: typeof $el.click всегда function, typeof $el.click() всегда object, typeof $el.onclick всегда undefined.
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2011, 09:51
Новичок на форуме
Посмотреть профиль Найти все сообщения от Льюк
 
Регистрация: 29.08.2011
Сообщений: 6

$el это что?
ps: у DOM элементов вроде бы у всех есть click
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2011, 10:04
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Если юзать JQuery, то можно.
<!DOCTYPE HTML>
<html>
  <head>   
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  </head>
  <body>
<script>
$(document.body).click(function() {alert('aa');});
var events = $(document.body).data('events');
if (events) {
  $.each(events, function(event, obj) {
    alert(event);
    // obj- Объект с инфой о событии и обработчике.
  });
}
</script>
  </body>
</html>


$(element).data('events') - Возвращает все обработчики событий для данного элемента. Соответственно в цикле тебе надо проходить по всем и проверять есть ли у элемента обработчик клика
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 30.08.2011 в 10:13.
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2011, 10:27
Интересующийся
Отправить личное сообщение для gizmomy Посмотреть профиль Найти все сообщения от gizmomy
 
Регистрация: 10.02.2010
Сообщений: 14

$el — это jQuery объект $('#show_panno')
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2011, 12:24
Интересующийся
Отправить личное сообщение для gizmomy Посмотреть профиль Найти все сообщения от gizmomy
 
Регистрация: 10.02.2010
Сообщений: 14

walik,

спасибо, но слишком сложно для такой ерунды. Я думал, может в jQuery есть аналог простого if (typeof element.onclick == 'function') element.onclick = null
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2011, 13:09
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от gizmomy Посмотреть сообщение
walik,

спасибо, но слишком сложно для такой ерунды. Я думал, может в jQuery есть аналог простого if (typeof element.onclick == 'function') element.onclick = null
смотря как установлен обработчик

$('#myimage').click(function() { return false; }); 
// снимается так
$('#myimage').unbind('click');
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2011, 13:10
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

А что тут сложного ?
Вот элементарный плагин за минуту сделанный для удобства если надо:
<!DOCTYPE HTML>
<html>
  <head>   
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    <script src="my.js"></script> 
  </head>
  <body>
<script>
// Начало плагина
$.fn.hasEventListener = function(eventType) {
  if (!eventType)
    return false;
  var has = false;
  var events = $(this).data('events');
  if (events)
    $.each(events, function(event) {
      if (event == eventType)
        has = true;
    });
  return has;
}
// Конец плагина

$(document.body).click(function() {alert('aa');});

if ($(document.body).hasEventListener('click'))
   alert('Has click');

if (!$(document.body).hasEventListener('mouseover'))
   alert("Hasn't mouseover");
</script>
  </body>
</html>


Ааа, ну как снимать обработчики, melky выше показал.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 30.08.2011 в 13:13.
Ответить с цитированием
  #8 (permalink)  
Старый 30.08.2011, 15:46
Интересующийся
Отправить личное сообщение для gizmomy Посмотреть профиль Найти все сообщения от gizmomy
 
Регистрация: 10.02.2010
Сообщений: 14

walik,

спасибо ещё раз. У меня было сделано так, что клик к элементу добавлялся динамически при определенном действии, действие это могло повторяться несколько раз, при этом хотелось добавлять клик только первый раз. Так как достаточно простого определения наличия клика в jQuery не нашлось, я пересмотрел код и изменил так, чтобы клик биндился только раз.

Всем ещё раз спасибо за помощь, тему можно закрывать.
Ответить с цитированием
  #9 (permalink)  
Старый 23.12.2012, 21:44
Новичок на форуме
Отправить личное сообщение для serhey.shmyg Посмотреть профиль Найти все сообщения от serhey.shmyg
 
Регистрация: 26.10.2011
Сообщений: 3

console.log('onpopstate' in window);
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2016, 19:31
Новичок на форуме
Отправить личное сообщение для DevDiamond Посмотреть профиль Найти все сообщения от DevDiamond
 
Регистрация: 24.10.2016
Сообщений: 1

$('#show_panno').click(function( event )
{
	if ( event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT' )
		$(this).children('ul').stop().slideToggle(200);
});


Примерно так
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать имя элемента syegorius Events/DOM/Window 3 12.10.2011 18:07
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как получить ID брошенного элемента методом drop? evgenyan jQuery 6 11.10.2010 14:22
как определить шрифты scuter Общие вопросы Javascript 9 19.05.2008 14:32
как определить позицию элемента относительно окна scuter Events/DOM/Window 5 07.05.2008 18:47