2017-02-12 2 views
0

Я хочу сделать mouseleave только один раз после срабатывания фокуса. Как? Я пробую несколько вариантов, таких как off, preventDefault, stopPropagation, return false; но никто не работал.Как запустить дочернее событие только один раз

Заранее спасибо.

addEvent(date, 'focus', function() { 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 
     console.log("mouseleave" + this.innerHTML); 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    }); 
}); 
+3

Знаете ли вы, что [.one()] (http://api.jquery.com/one/)? –

ответ

0

Установите флажок, и на основном этот флаг выполнять ваши функции,

Попробуйте

var isFocussed = false; 
addEvent(date, 'focus', function() { 
    isFocussed = true; 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 

     console.log("mouseleave" + this.innerHTML); 
     if(isFocussed){ 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     isFocussed = false; 
     return false; 
     } 
    }); 
}); 
}); 
+0

Не работает m8. У меня есть фокус только один раз, но мышь все время я выхожу из ячейки (таблица td) ...:/ –

+0

Опубликовать скрипку с вопросом –

0

фиксируется в случае MouseEnter для запуска проверки с остановкой варом. Как только мышеловка происходит, остановка включена.

addEvent(swap_date, 'mouseenter', function() { 
stop = false; 
}); 

addEvent(swap_date, 'focus', function() { 
document.designMode = 'on'; 

if (this.innerHTML != "") { 
    $(document).ready(function() { 
     $('.swapDate').bind('mouseleave', function (event) { 
      if (!stop && this.innerHTML != "") 
      checkDate(this.innerHTML); 
      stop = true; 
      $('.swapDate').unbind('mouseleave'); 
     }); 


    }); 
} 
}); 
Смежные вопросы