Javascript.RU

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

.remove для родителя возникает и при клике на потомка. Как отключить?
Кодеры, приветствую вас и прошу помощи!
Добавляю элемент.
$("body").append('<div id="read"><div id="onread">' + msg + '</div></div>' );

Пытаюсь убрать. Так не работает.
$("#read").click(function() {
    $("#read").remove();
});

Работает так.
$("#read").live("click", function() {
    $("#read").remove();
}

Хрен бы сним, но .live убивает всё и при клике на внутренний блок #onread, то есть - передаётся родителю #read - а это не гуд.
Как сделать так, чтобы при клике на вложенный блок события click для родителя #read не возникало.
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2013, 15:16
Интересующийся
Отправить личное сообщение для arachnoz Посмотреть профиль Найти все сообщения от arachnoz
 
Регистрация: 26.06.2012
Сообщений: 23

Камараден, ну хоть что-то скажите

Может что-то типа того (коряво, простите):

if ('#onread').onmouseover(function {ничего не делать} )
else $("#read").remove();
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2013, 15:24
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Вот так:
http://jsfiddle.net/7RZUC/27/
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2013, 17:43
Интересующийся
Отправить личное сообщение для arachnoz Посмотреть профиль Найти все сообщения от arachnoz
 
Регистрация: 26.06.2012
Сообщений: 23

Ссылка не работает

Нагуглил теорию:

Цитата:
Элементы DOM могут быть вложены друг в друга. При этом обработчик, привязанный к родителю, срабатывает, даже если посетитель кликнул по потомку.

Это происходит потому, что событие всплывает.

Как не дать ему всплыть от потомка? Как-то так, но куда встраивать? В If $("#onread").click()?

$("p").click(function(event){
event.stopPropagation();
// do something
});



Всё, решил вопрос. Оказалось всё просто.

$("#onread").live("click", function(event){
event.stopPropagation();
}); 

$("#read").live("click", function() {
$("#read").remove();
});


Но тем не менее, хотелось бы понять, почему не работает OnClick (а точнее, .click в JQuery), а работает .live?
Из-за динамического добавления блоков в DOM?

Последний раз редактировалось arachnoz, 05.07.2013 в 17:59.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
как при клике на фотографию увеличить ее, затемнив фон Ichigeki ExtJS 3 23.06.2011 17:34
Люди помогите! Как отключить css для ОПЕРЫ МИНИ??? griha787 Элементы интерфейса 1 13.04.2011 20:10
Как указать title при открытии окна через window.open для chrome milvic Opera, Safari и др. 4 15.01.2011 15:18
Применение стиля для родителя при выбраном чекбоксе house.wm jQuery 6 22.04.2010 11:35