Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2015, 09:51
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Как остановить бабблинг ?
У меня
<tr title='Click to continue this Duel' 
		onclick='playit(this.children[0].value); return false;'>
...
<td  onclick='deleteTable(this.parentNode); return false;' title='Delete this Duel'>


Я считал, что
return false
должно бы предотвратить выполнение функции playit, но этого почему то не происходит.
Подскажите, что я сделал неправильно?
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2015, 10:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Григорий Данилович
что я сделал неправильно?
Ты не остановил всплытие события...
Вот про то статейка.
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2015, 14:25
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Сообщение от ksa Посмотреть сообщение
Ты не остановил всплытие события...
Вот про то статейка.
А как остановить? Я такого не делал никогда.
Ответить с цитированием
  #4 (permalink)  
Старый 30.10.2015, 14:27
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Сообщение от Григорий Данилович Посмотреть сообщение
А как остановить? Я такого не делал никогда.
Не сразу заметил. Щас почитаю. Но нужно будет работать с событиями - не так как сейчас
Ответить с цитированием
  #5 (permalink)  
Старый 30.10.2015, 14:51
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Нужно использовать addEventListener вместо вшитой в HTML onclick с параметром. Мне не хочется добавлять ещё одну setup функцию, а как использовать код который у меня уже есть?
Я попробовал
ev=window.event;
, но это undefined. Как найти событие кросбраузерно?
Ответить с цитированием
  #6 (permalink)  
Старый 30.10.2015, 16:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Григорий Данилович
Я попробовал
ev=window.event;

Как найти событие кросбраузерно?
В той же статье есть и про event...
http://javascript.ru/tutorial/events...-sobytie-event
Ответить с цитированием
  #7 (permalink)  
Старый 30.10.2015, 17:49
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Сейчас я посылаю параметер this - то есть ссылку на кнопку, а в примерах передаётся event. А как мне ОДНОВРЕМЕННО иметь и то и другое?
Ответить с цитированием
  #8 (permalink)  
Старый 30.10.2015, 17:52
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

Кажется, я нашёл
function doSomething(e) {
    e = e || window.event;
    var target = e.target || e.srcElement;
    console.log(target);
}


Так? Да?
Ответить с цитированием
  #9 (permalink)  
Старый 30.10.2015, 18:29
Аспирант
Отправить личное сообщение для Григорий Данилович Посмотреть профиль Найти все сообщения от Григорий Данилович
 
Регистрация: 28.05.2015
Сообщений: 42

работающий окончательный вариант для тех кому он нужен будет.

HTML:
<tr  onclick='playit(this.children[0].value); return false;'>
....
		<td  onclick='eventH(event); return false;' title='Delete this Duel' class='f4'><button>X</button></td>....</tr>


function eventH(ev){
	ev = ev || window.event;
	var a = ev.target || ev.srcElement;
	console.log('*** '+a+' : '+ev.type);
	 if (ev.stopPropagation) {
	        ev.stopPropagation()
	    } else {
	        ev.cancelBubble = true
	    }

В этом:
return false;
кажется, нет необходимости, но я не проверял. Спасибо за помощь, KSA!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как остановить requestAnimationFrame() ? Livanderiaamarum Общие вопросы Javascript 19 09.11.2014 02:41
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как остановить загрузку js файла на странице p3ps AJAX и COMET 6 23.11.2013 09:21
как остановить функцию? vladimir7517 jQuery 10 11.10.2013 13:17
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25