Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2012, 20:12
Новичок на форуме
Отправить личное сообщение для byzyk Посмотреть профиль Найти все сообщения от byzyk
 
Регистрация: 12.07.2011
Сообщений: 7

Событие live
Добрый день, вопрос может и странный, но все же.
Вешается у меня событие live на элемент (всего таких на странице несколько) скажем с class=foo
$('.foo').live('click', function() {
//blabla
});


Но дальше мне нужно удалить live у одного элемента, примерно так:
$('#sel1').parent().find('.foo').die();


Но т.к. таким образом задавать событие нельзя, вопрос: Как это обойти?
Заранее спасибо.

PS: Вешал таким образом событие click(); с пустой функцией внутри - не помогает.
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2012, 20:50
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
  $('#sel1').parent().find('.foo').addClass('insertClick').attr('id','insert_сlck');

  $(".foo:not('.insertClick')").live('click', function() { 
    alert($(this).html())
    //$('.insertClick').removeAttr('id'); //Если нужно удалять клик и в этом случае строку - раскоментируем
  });


  $('#insert_сlck').live('click', function() { 
    alert($(this).html())
    $(this).removeAttr('id');
 });
});
</script>



<div class="foo">А тут - не удаляем</div>

<div>
 <div id="sel1"></div> 
 <div class="foo" style=color:red>Тут удаляем клик</div>
</div>

Последний раз редактировалось Deff, 03.08.2012 в 12:20.
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2012, 21:05
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Deff, плоховато трогать ID - вдруг он нужен.

я бы сделал так, через data :

$('.foo').live('click', function() {
*!*
    if ($.data(this, "Live убран с этого элемента") === "да, убран") { return; }
*/!*
    //blabla
});

// убираем live с нужного элемента :
$element.data("Live убран с этого элемента", "да, убран");

// возвращаем на место live :
$element.data("Live убран с этого элемента", null);
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2012, 21:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

melky,
Мон и третий класс навесить - как легло -так и сделал
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2012, 21:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Deff Посмотреть сообщение
melky,
Мон и третий класс навесить - как легло -так и сделал
классовые манипуляции вызывают перерисовки, а в данном случае - ненужные.
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2012, 08:23
Новичок на форуме
Отправить личное сообщение для byzyk Посмотреть профиль Найти все сообщения от byzyk
 
Регистрация: 12.07.2011
Сообщений: 7

Спасибо большое за отклики, вечером опробую варианты - отпишусь
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2012, 12:18
Новичок на форуме
Отправить личное сообщение для byzyk Посмотреть профиль Найти все сообщения от byzyk
 
Регистрация: 12.07.2011
Сообщений: 7

melky,
Спасибо большое, Ваш вариант помог
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 10:46
jQuery live функция immeasurability jQuery 1 16.05.2011 10:15
Отловить событие simple Events/DOM/Window 3 11.05.2011 13:20
jquery и live herba jQuery 2 19.06.2010 13:00
live click выполняется несколько раз hara jQuery 9 09.06.2010 09:58