Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие live (https://javascript.ru/forum/jquery/30176-sobytie-live.html)

byzyk 26.07.2012 21:12

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


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


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

PS: Вешал таким образом событие click(); с пустой функцией внутри - не помогает.

Deff 26.07.2012 21:50

<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>

melky 26.07.2012 22:05

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

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

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

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

// возвращаем на место live :
$element.data("Live убран с этого элемента", null);

Deff 26.07.2012 22:06

melky,
Мон и третий класс навесить - как легло -так и сделал

melky 26.07.2012 22:07

Цитата:

Сообщение от Deff (Сообщение 191892)
melky,
Мон и третий класс навесить - как легло -так и сделал

классовые манипуляции вызывают перерисовки, а в данном случае - ненужные.

byzyk 27.07.2012 09:23

Спасибо большое за отклики, вечером опробую варианты - отпишусь

byzyk 03.08.2012 13:18

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


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