Javascript.RU

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

Разные события для одного и того же элемента
Добрый день.

У меня есть неупроядоченный список ul в контейнере colleft. При щелчке на элемент li он меняет класс на selected, и под ним появляется div с кнопками внутри: "Переименовать", "Удалить" и т.п..
Мне нужно отвязать от щёлкнутого li появление div-а и смену класса по нажатию кнопки "Переименовать" и привязать другое событие.

Общий смысл такой: нажал на элемент - появилось меню управления им. После щелчка на определённый пункт меню повторное нажатие на выбранный элемент вызывает уже другое действие с этим элементом - удаление, переименование, в зависимости от нажатой кнопки меню.
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2011, 09:17
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

.bind(), .unbind() ?
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2011, 09:40
Интересующийся
Отправить личное сообщение для kpoxo6op Посмотреть профиль Найти все сообщения от kpoxo6op
 
Регистрация: 12.07.2011
Сообщений: 10

Сообщение от walik Посмотреть сообщение
.bind(), .unbind() ?
Я догадывался, что надо что-то делать с ними. Можно где-нибудь пример посмотреть, где у одного элемента сначала одно, а потом другое событие, после нажатия кнопки типа "Переключить"?
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2011, 08:25
Интересующийся
Отправить личное сообщение для kpoxo6op Посмотреть профиль Найти все сообщения от kpoxo6op
 
Регистрация: 12.07.2011
Сообщений: 10

$(document).ready(function () {

   //функция показывания дива
   function showDiv() {
   
      $(this).addClass("selected").after("<div class=\"test\">многочисленные кнопки и формы</div>");
      
   }
   
   //функция показывания дива showDiv привязывается ко всем элементам colleft li

   $(".colleft li").live("click", showDiv);

   //кнопка unbind - отвязать событие показывания дива, убрать стиль selected, задать стиль edit   
   
   $("#unbind").click(function () {
   
      $("li.selected").die("click", showDiv).removeClass("selected").addClass("edit");
   
    });

});


почему не работает?
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2011, 08:38
Интересующийся
Отправить личное сообщение для kpoxo6op Посмотреть профиль Найти все сообщения от kpoxo6op
 
Регистрация: 12.07.2011
Сообщений: 10

$(document).ready(function () {

   //функция показывания дива
   function showDiv() {
   
      $(this).addClass("selected").after("<div class=\"test\">многочисленные кнопки и формы</div>");
      
   }
   
   //функция показывания дива showDiv привязывается ко всем элементам colleft li

   $(".colleft li").bind("click", showDiv);

   //кнопка unbind - отвязать событие показывания дива, убрать стиль selected, задать стиль edit   
   
   $("#unbind").click(function () {
   
      $("li.selected").unbind("click", showDiv).removeClass("selected").addClass("edit");
   
    });

});


то же самое с bind и unbind работает. В чём секрет?
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2011, 11:16
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

$(function(){

$(".colleft").delegate("li", "click", function(){
  var $listItem = $(this);
  if ( $listItem.hasClass("edit") ) {
  } else if ( $listItem.hasClass("selected") ) {
    $listItem.removeClass("selected").addClass("edit");
  } else {
    $listItem.addClass("selected");
  }
})

});
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2011, 23:51
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Возьмите за правило, что в 90% лучше делегирование событий, чем прямое привязывание)
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31
Применение функции для каждого элемента sergeygerasimov jQuery 2 26.11.2008 11:15
События в javascript для формы. woo_hoo Общие вопросы Javascript 5 17.07.2008 19:13