Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Jquery: определить элемент, по которму кликнули / 15 сообщений из 15, страница 1 из 1
09.11.2016, 03:00
    #39343966
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Всем привет!
Есть что-то типа того:

Код: html
1.
<div class="label">Я принимаю <a href="#">правила</a></div>


Код: javascript
1.
2.
3.
4.
5.
6.
$(document).ready(
    function()
    {
        $( '.label' ).click( function() { someFunc(); } );
    }
);



Мне нужно, чтобы в случае клика по ссылке (<a>) someFunc() не запускалась.
Как это сделать?
Заранее спасибо!
...
Рейтинг: 0 / 0
09.11.2016, 08:37
    #39344003
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
urukhayКак это сделать?
Как вариант...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('.label').click(function(){
		alert('someFunc();');
	});
	$('.label > a').click(function(event){
		alert('No');
		// кросс-браузерно
		event = event || window.event; 
		if (event.stopPropagation) {
			// Вариант стандарта W3C:
			event.stopPropagation();
		} else {
			// Вариант Internet Explorer:
			event.cancelBubble = true;
		};
	});
});
</script>
</head>
<body>
<div class="label">Я принимаю <a href="#">правила</a></div>
</body>
</html>
...
Рейтинг: 0 / 0
10.11.2016, 17:23
    #39345080
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
krvsa , спасибо!
Но у меня этот код в хроме не работает :)

А вот если в блок if добавитть:
Код: javascript
1.
event.preventDefault();


тогда работает. В чем причина?

Скажи, а event всегда так проверять надо:
Код: javascript
1.
event = event || window.event;


Я, честно говоря, так никогда не делал.
Работал всегда напрямую с event.
Это в каких-то случаях может не работать?
...
Рейтинг: 0 / 0
10.11.2016, 17:33
    #39345092
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
krvsaurukhayКак это сделать?
Как вариант...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('.label').click(function(){
		alert('someFunc();');
	});
	$('.label > a').click(function(event){
		alert('No');
		// кросс-браузерно
		event = event || window.event; 
		if (event.stopPropagation) {
			// Вариант стандарта W3C:
			event.stopPropagation();
		} else {
			// Вариант Internet Explorer:
			event.cancelBubble = true;
		};
	});
});
</script>
</head>
<body>
<div class="label">Я принимаю <a href="#">правила</a></div>
</body>
</html>

раньше было везде достаточно return false.
уже недостаточно?
...
Рейтинг: 0 / 0
10.11.2016, 18:42
    #39345158
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Antonariyраньше было везде достаточно return false.
уже недостаточно?

Всегда было правильно preventDefault(), как раз return false можно не делать.
...
Рейтинг: 0 / 0
10.11.2016, 18:55
    #39345168
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Так как правильно в итоге? ))
stopPropagnation() отменяет события у родителя, но не отменяет клик по ссылке.
...
Рейтинг: 0 / 0
10.11.2016, 20:35
    #39345212
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
urukhayТак как правильно в итоге? ))
stopPropagnation() отменяет события у родителя, но не отменяет клик по ссылке.пробуй всё, пока не получишь нужный результат.
...
Рейтинг: 0 / 0
10.11.2016, 22:54
    #39345268
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Было предложено следующее:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
event = event || window.event; 
if (event.stopPropagation) {
// Вариант стандарта W3C:
event.stopPropagation();
} else {
// Вариант Internet Explorer:
event.cancelBubble = true;
};



Работае сие:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
event = event || window.event; 
if (event.stopPropagation) {
// Вариант стандарта W3C:
event.preventDefault();
event.stopPropagation();
} else {
// Вариант Internet Explorer:
event.cancelBubble = true;
};



НО: на stopPropagation мы проверили, а на preventDefault - нет.
Получается, должно быть так?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
event = event || window.event; 
if (event.stopPropagation && event.preventDefault) {
// Вариант стандарта W3C:
event.preventDefault();
event.stopPropagation();
} else {
// Вариант Internet Explorer:
event.cancelBubble = true;
};



Если так ... а если у меня еще какой-то вызов появится, его тоже проверять надо что ли?
И как изменится блок else?
...
Рейтинг: 0 / 0
11.11.2016, 03:23
    #39345323
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
urukhayЕсли так ... а если у меня еще какой-то вызов появится, его тоже проверять надо что ли?
И как изменится блок else?

никак. чтобы сократить количество кода и, следовательно, количество ошибок — не вешай обработчики на сами элементы, вешай их на контейнер. ну и старайся не ставить намеренно задач, для решения которых требуются навыки акробата.

ссылка внутри кликабельного элемента — уже кривая задача. промахнуться по ссылке очень легко, а поведение будет для пользователя неожиданностью. просто поэтому, никто особенно не парится с решением таких проблем — люди себе их просто тупо не создают.
...
Рейтинг: 0 / 0
11.11.2016, 04:35
    #39345328
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Что-то я, видимо, не в себе был ))

Я 2 задачи смешал в одну. Спрашивал-то я об одном, а потом начал писать про другое.
Отменить клик по ссылке в условиях задачи не было.
Так что код работает!

Спасибо!
...
Рейтинг: 0 / 0
11.11.2016, 09:15
    #39345358
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Antonariyраньше было везде достаточно return false.
уже недостаточно?
Этот пример я просто взял из букваря...
http://javascript.ru/tutorial/events/intro#ostanovka-vsplytiya

А как кому действовать на практике, это уже решать самим.
...
Рейтинг: 0 / 0
11.11.2016, 09:20
    #39345360
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Antonariyраньше было везде достаточно return false.
уже недостаточно?
Вот что, там пишут по поводу
Код: javascript
1.
return false;


http://javascript.ru/tutorial/events/intro#smysl-return-false-iz-obrabotchika
...
Рейтинг: 0 / 0
11.11.2016, 09:21
    #39345361
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
urukhay krvsa , спасибо!
Но у меня этот код в хроме не работает :)

А вот если в блок if добавитть:
Код: javascript
1.
event.preventDefault();


тогда работает. В чем причина?

Скажи, а event всегда так проверять надо:
Код: javascript
1.
event = event || window.event;


Я, честно говоря, так никогда не делал.
Работал всегда напрямую с event.
Это в каких-то случаях может не работать?
Прочитай всю статейку по этому вопросу. ;) Там много чего объясняют...
http://javascript.ru/tutorial/events/intro#poryadok-srabatyvaniya-sobytiy
...
Рейтинг: 0 / 0
11.11.2016, 09:22
    #39345362
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
Antonariyпробуй всё, пока не получишь нужный результат.
Соломоново решение!
...
Рейтинг: 0 / 0
11.11.2016, 23:29
    #39345974
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Jquery: определить элемент, по которму кликнули
авторПрочитай всю статейку по этому вопросу. ;) Там много чего объясняют
Спасибо!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Jquery: определить элемент, по которму кликнули / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]