Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как остановить бабблинг ? (https://javascript.ru/forum/events/59159-kak-ostanovit-babbling.html)

Григорий Данилович 30.10.2015 09:51

Как остановить бабблинг ?
 
У меня
<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, но этого почему то не происходит.
Подскажите, что я сделал неправильно?

ksa 30.10.2015 10:21

Цитата:

Сообщение от Григорий Данилович
что я сделал неправильно?

Ты не остановил всплытие события... :no:
Вот про то статейка.

Григорий Данилович 30.10.2015 14:25

Цитата:

Сообщение от ksa (Сообщение 393683)
Ты не остановил всплытие события... :no:
Вот про то статейка.

А как остановить? Я такого не делал никогда.

Григорий Данилович 30.10.2015 14:27

Цитата:

Сообщение от Григорий Данилович (Сообщение 393733)
А как остановить? Я такого не делал никогда.

Не сразу заметил. Щас почитаю. Но нужно будет работать с событиями - не так как сейчас

Григорий Данилович 30.10.2015 14:51

Нужно использовать addEventListener вместо вшитой в HTML onclick с параметром. Мне не хочется добавлять ещё одну setup функцию, а как использовать код который у меня уже есть?
Я попробовал
ev=window.event;
, но это undefined. Как найти событие кросбраузерно?

ksa 30.10.2015 16:54

Цитата:

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

Как найти событие кросбраузерно?

В той же статье есть и про event...
http://javascript.ru/tutorial/events...-sobytie-event

Григорий Данилович 30.10.2015 17:49

Сейчас я посылаю параметер this - то есть ссылку на кнопку, а в примерах передаётся event. А как мне ОДНОВРЕМЕННО иметь и то и другое?

Григорий Данилович 30.10.2015 17:52

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


Так? Да?

Григорий Данилович 30.10.2015 18:29

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

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!


Часовой пояс GMT +3, время: 14:35.