Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обработчик для двух событий у разных объёктов (https://javascript.ru/forum/jquery/38980-obrabotchik-dlya-dvukh-sobytijj-u-raznykh-objoktov.html)

gearique 11.06.2013 17:49

Обработчик для двух событий у разных объёктов
 
Два дня уже ищу не могу найти Подскажите пожалуйста такую конструкцию, в которой указываешь название элементов, на которых не делать блур.

BaVa 11.06.2013 22:41

если я правильно понял, то можно сделать примерно так:
<!doctype html> 
<html>
<head>
<meta charset="utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	$(".one").on("click", function() { // подключаем событие для всех элементов с классом one
		$(this).css({backgroundColor: "#f80"});
	});
	$(".two").off("click"); // отключаем событие для элемента с классом two
});
</script>
</head>
<body>
	<div class="one">
		one
	</div>
	<div class="one two">
		two
	</div>
	<div class="one">
		three
	</div>
</body>
</html>

gearique 12.06.2013 00:31

Как бы всё гораздо сложнее...

Фокус у меня находится на инпуте, так вот при клике на кнопку, которая рядом с этим инпутом я хочу выполнять одно действие, а просто при блюре инпута- другие.

vadim5june 12.06.2013 00:55

<!DOCTYPE html>
<html>
<input onblur=f()><button onmousedown=f1()>click</button>
<script>
var a=0;
function f(){if(a)alert(11);else alert(444);a=0};
function f1(){a=1};
</script>

gearique 12.06.2013 01:02

Я пробовал такую конструкцию- она не работает: сначала срабатывает блюр у эллемента, а клик на кнопку уже после. вот такие дела.

vadim5june 12.06.2013 01:05

Цитата:

Сообщение от gearique
Я пробовал такую конструкцию- она не работает: сначала срабатывает блюр у эллемента, а клик на кнопку уже после. вот такие дела.

это если click использовать а если mousedown как я использовал то все правильно срабатывает

gearique 12.06.2013 01:37

Ааа... но этот способ тоже не подходит, т.к. mousedown не подходит для планшетов.

devote 12.06.2013 02:33

gearique,
я вот все никак не могу понять что конкретно вы хотите получить... Я так понимаю обработать клик до того как сработает событие блюр? Дык это не возможно, ибо клик всегда будет срабатывать позже.
<input /><button>click</button>
<script>
    document.addEventListener('blur', function(e) {
        if (e.target.nodeName === 'INPUT') {
            document.body.appendChild(document.createTextNode('blur|'));
        }
    }, true);
    document.querySelector('button').addEventListener('click', function(e) {
        document.body.appendChild(document.createTextNode('click|'));
    }, false);
</script>

vadim5june 12.06.2013 09:12

Цитата:

Сообщение от gearique
Ааа... но этот способ тоже не подходит, т.к. mousedown не подходит для планшетов.

<!DOCTYPE html>
<html>
<input onblur=f()><button onclick=f1() >click</button>
<script>
var a=0;
function f(){setTimeout(function(){if(a)alert('click');else alert('blur');a=0},400)};
function f1(){a=1;};
</script>

gearique 13.06.2013 04:09

Спасибо! Работает!
Немного подправил и работает... выложить функцию, может кому пригодиться?


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