13.07.2012, 23:38
|
Интересующийся
|
|
Регистрация: 21.12.2011
Сообщений: 10
|
|
В моем случае, удобнее всего оказалось вот это:
<tr onclick=.... и т.д>
<td onclick="event.stopPropagation?event.stopPropagation():event.cancelBubble=true">
Кстати, пробовал cancelBubble в разных браузерах IE 8, Firefox 13.0.1, Chromium везде срабатывало, т.е. получается что если не бояться монстров пожирающих за плохой стиль програмирования, то можно было бы обойтись и без stopPropagation.
P/S: про оба эти свойства раньше не слышал, очень благодарен всем указавшим на них!
Последний раз редактировалось Rig, 13.07.2012 в 23:44.
|
|
15.07.2012, 10:59
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Кстати у cyber наверное самое универсальное решение для определения наличия ссылки в родительском контейнере: element.getElementsByTagName('a').length вернёт 0, если ссылок нет
PS:
Сообщение от cyber
|
if(tags.length)return;
alert('ссылок нет');
|
alert не сработает после return
|
|
15.07.2012, 14:36
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от bes
|
Кстати у cyber наверное самое универсальное решение для определения наличия ссылки в родительском контейнере: element.getElementsByTagName('a').length вернёт 0, если ссылок нет
PS:
alert не сработает после return
|
да я писал я его в форме комментария вообще странно что он пашет.А насчет того что не правильно будет работать вы правы..
вот так правильно
if(element.getElementsByTagName('a')[0])
|
|
15.07.2012, 15:39
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от cyber
|
да я писал я его в форме комментария вообще странно что он пашет.А насчет того что не правильно будет работать вы правы..
вот так правильно
if(element.getElementsByTagName('a')[0])
|
Можно и так, но можно и через length.
Проверку наверное лучше сделать на равенство 0 (или undefined в последнем случае), так как иначе каждый раз будут осуществляться лишние проверки на неравенство пустой строке, null и undefined (не принципиально, конечно, но всё же).
PS: А срабатывает потому, что length коллекции всегда существует: если ссылок нет, то length равно 0 (если ссылки есть, то length > 0, поэтому проверка на неравенство 0 сработает, поэтому сработает return, а если ссылок нет, то проверка на неравенство 0 не сработает, следовательно, не сработает return, поэтому выполнится alert, так что этот способ рабочий, хотя может быть и несколько морочный для понимания).
|
|
15.07.2012, 15:45
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от bes
|
Можно и так, но можно и через length.
Проверку наверное лучше сделать на равенство 0 (или undefined в последнем случае), так как иначе каждый раз будут осуществляться лишние проверки на неравенство пустой строке, null и undefined (не принципиально, конечно, но всё же).
PS: А срабатывает потому, что length коллекции всегда существует: если ссылок нет, то length равно 0 (если ссылки есть, то length > 0, поэтому проверка на неравенство 0 сработает, поэтому сработает return, а если ссылок нет, то проверка на неравенство 0 не сработает, следовательно, не сработает return, поэтому выполнится alert, так что этот способ рабочий, хотя может быть и несколько морочный для понимания).
|
вы меня самого запутали=)
кстати да оно правильно работает if(tags.length)return;
|
|
15.07.2012, 15:51
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от cyber
|
вы меня самого запутали=)
|
Да, всё чётко, это я сразу не совсем вник в ситуацию, пардон , ТС просил отсечь ячейки со ссылками, return отсёк.
|
|
15.07.2012, 17:42
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
|
|
15.07.2012, 17:50
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Rig
|
<tr onclick=.... и т.д>
<td onclick="event.stopPropagation?event.stopPropagation():event.cancelBubble=true">
|
кстати мне кто то может объяснить как для отмены вызова функции в ячейках с ссылками, помогает отмена всплытия?
|
|
15.07.2012, 17:54
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от cyber
|
кстати мне кто то может объяснить как для отмены вызова функции в ячейках с ссылками, помогает отмена всплытия?
|
Если при клике на ячейку не будет всплытия, то не сработает обработчик клика на tr, который TC как раз и ставил
|
|
15.07.2012, 17:59
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
это типо тс будет вешать в ручную обработчик на каждую ячейку где есть ссылка? (у меня конечно была такая мысль но она мне показалась сильно бредовой)
|
|
|
|