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

Код: 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
Jquery: определить элемент, по которму кликнули
    #39344003
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Jquery: определить элемент, по которму кликнули
    #39345080
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa , спасибо!
Но у меня этот код в хроме не работает :)

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


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

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


Я, честно говоря, так никогда не делал.
Работал всегда напрямую с event.
Это в каких-то случаях может не работать?
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345092
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Jquery: определить элемент, по которму кликнули
    #39345158
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyраньше было везде достаточно return false.
уже недостаточно?

Всегда было правильно preventDefault(), как раз return false можно не делать.
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345168
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как правильно в итоге? ))
stopPropagnation() отменяет события у родителя, но не отменяет клик по ссылке.
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345212
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayТак как правильно в итоге? ))
stopPropagnation() отменяет события у родителя, но не отменяет клик по ссылке.пробуй всё, пока не получишь нужный результат.
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345268
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было предложено следующее:
Код: 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
Jquery: определить элемент, по которму кликнули
    #39345323
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayЕсли так ... а если у меня еще какой-то вызов появится, его тоже проверять надо что ли?
И как изменится блок else?

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

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

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

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

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


http://javascript.ru/tutorial/events/intro#smysl-return-false-iz-obrabotchika
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345361
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Jquery: определить элемент, по которму кликнули
    #39345362
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyпробуй всё, пока не получишь нужный результат.
Соломоново решение!
...
Рейтинг: 0 / 0
Jquery: определить элемент, по которму кликнули
    #39345974
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПрочитай всю статейку по этому вопросу. ;) Там много чего объясняют
Спасибо!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Jquery: определить элемент, по которму кликнули
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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