Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.07.2012, 23:38
Rig Rig вне форума
Интересующийся
Отправить личное сообщение для Rig Посмотреть профиль Найти все сообщения от Rig
 
Регистрация: 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.
Ответить с цитированием
  #12 (permalink)  
Старый 15.07.2012, 10:59
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Кстати у cyber наверное самое универсальное решение для определения наличия ссылки в родительском контейнере: element.getElementsByTagName('a').length вернёт 0, если ссылок нет
PS:
Сообщение от cyber
if(tags.length)return;
alert('ссылок нет');
alert не сработает после return
Ответить с цитированием
  #13 (permalink)  
Старый 15.07.2012, 14:36
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от bes Посмотреть сообщение
Кстати у cyber наверное самое универсальное решение для определения наличия ссылки в родительском контейнере: element.getElementsByTagName('a').length вернёт 0, если ссылок нет
PS:
alert не сработает после return
да я писал я его в форме комментария вообще странно что он пашет.А насчет того что не правильно будет работать вы правы..
вот так правильно
if(element.getElementsByTagName('a')[0])
Ответить с цитированием
  #14 (permalink)  
Старый 15.07.2012, 15:39
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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 (permalink)  
Старый 15.07.2012, 15:45
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 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;
Ответить с цитированием
  #16 (permalink)  
Старый 15.07.2012, 15:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от cyber
вы меня самого запутали=)
Да, всё чётко, это я сразу не совсем вник в ситуацию, пардон , ТС просил отсечь ячейки со ссылками, return отсёк.
Ответить с цитированием
  #17 (permalink)  
Старый 15.07.2012, 17:42
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от bes Посмотреть сообщение
Да, всё чётко, это я сразу не совсем вник в ситуацию, пардон , ТС просил отсечь ячейки со ссылками, return отсёк.
бывает
Ответить с цитированием
  #18 (permalink)  
Старый 15.07.2012, 17:50
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Rig Посмотреть сообщение
<tr onclick=.... и т.д>
<td onclick="event.stopPropagation?event.stopPropagation():event.cancelBubble=true">
кстати мне кто то может объяснить как для отмены вызова функции в ячейках с ссылками, помогает отмена всплытия?
Ответить с цитированием
  #19 (permalink)  
Старый 15.07.2012, 17:54
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от cyber
кстати мне кто то может объяснить как для отмены вызова функции в ячейках с ссылками, помогает отмена всплытия?
Если при клике на ячейку не будет всплытия, то не сработает обработчик клика на tr, который TC как раз и ставил
Ответить с цитированием
  #20 (permalink)  
Старый 15.07.2012, 17:59
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

это типо тс будет вешать в ручную обработчик на каждую ячейку где есть ссылка? (у меня конечно была такая мысль но она мне показалась сильно бредовой)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение фона элемента при клике. psydo Элементы интерфейса 8 28.06.2012 23:53
При клике менять значение в ячейке таблицы edmundantes Events/DOM/Window 8 27.04.2012 17:26
Изменение цвета ячейки в таблице, при наведении на строку другой таблицы Psychosonic Общие вопросы Javascript 12 24.11.2010 16:44