как предотвратить повторное создание функции
Уважаемые форумчане, есть некий код плагина, скрипт в упрощенном варианте представлен ниже.
var $this = $(':text');
function showList(){
$(document).click( function(e){
if ( e.target !== $this.get(0) ){ $('ul').hide() };
});
$('ul').show()
.children('li').click(function(e){
e.stopPropagation();
alert('Selected ME');
});
}
$this.delegate( 'focusin', showList() );
Так вот, вопрос в следующем, как предотвратить повторное создание функций "Клика" для документа и элементов LI. Суть в следующем, указанный скрипт прописан в самом плагине, элемент UL очень часто появляется (при фокусе) и исчезает, по этой причине, советы типа: вызвать единожды оба клика за пределами плагина - не вариант. При существующем коде, тестовое алерт-сообщение выскакивает нарастающим количеством при каждом новом получении фокуса текстовым полем. Заранее признателен. |
var $this = $(':text'),
assignedEvent = false;
function showList(){
var ul = $('ul').show();
if ( !assignedEvent ) {
assignedEvent = true;
$(document).click( function(e){
if ( e.target !== $this.get(0) ){ $('ul').hide() };
});
ul.children('li').click(function(e){
e.stopPropagation();
alert('Selected ME');
});
}
}
$this.delegate( 'focusin', showList() );
|
Цитата:
|
var $this = $(':text');
function showList(){
$(document).unbind("click.gavnoplugin").bind("click.gavnoplugin", function(e){
if ( e.target !== $this.get(0) ){ $('ul').hide() };
});
$('ul').show()
.children('li').unbind("click.gavnoplugin").bind("click.gavnoplugin", function( e ){
e.stopPropagation();
alert('Selected ME');
});
}
$this.delegate( 'focusin', showList );
|
| Часовой пояс GMT +3, время: 21:25. |