Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как избежать вызова события 2 раза (https://javascript.ru/forum/jquery/51084-kak-izbezhat-vyzova-sobytiya-2-raza.html)

Freeman777 23.10.2014 19:47

как избежать вызова события 2 раза
 
Добрый день.

Использую плагин datatables.net для проекта. В таблице используются кнопки с обработкой событий. Обработчик вида

$( ".btn-show-datails" ).on( "click", function( e ){ ... });

срабатывает только для первой страницы. На всех остальных он не работает.

Для этого вынес обработку события в отдельную функцию resultDetailsShow( el, e ){} и вызываю её дважды:

// 1й раз
$( ".btn-odds" ).on( "click", function( e ){
	 resultDetailsShow( $( this ), e );
});

// 2й раз
tableResult.on( "draw", function() {
	$( this ).find( ".btn-odds" ).each( function( index, val ) {
		$( this ).click( function( e ) {
			resultDetailsToggle( $( this ), e );
		});
	});
});

В результате получил обработку событий на всех страницах при пагинации и новый баг - 2й вызов функции на 1й странице :(

Не хотелось бы костылить. Как можно решить проблему работы функции на всех страницах? Спасибо.

danik.js 23.10.2014 19:55

Ну не зная че как у тебя устроено, можно посоветовать либо использовать делегирование, либо перед вторым навешиванием делать .off('click')

Кстати, зачем .each()?

Freeman777 27.10.2014 11:45

Цитата:

Сообщение от danik.js (Сообщение 337176)
Ну не зная че как у тебя устроено, можно посоветовать либо использовать делегирование, либо перед вторым навешиванием делать .off('click')

Кстати, зачем .each()?

Спасибо
Цитата:

Сообщение от danik.js
зачем .each()?

перестраховался и лишняя вещь. Можно убрать :)))


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