Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Клик по блоку. Исключить элементы. (https://javascript.ru/forum/jquery/29908-klik-po-bloku-isklyuchit-ehlementy.html)

svs 16.07.2012 16:27

Клик по блоку. Исключить элементы.
 
Всем привет ))

есть код
this.element.closest('form').on('click', function () {
alert(1);
});

Содержимое всей страница в теге ФОРМ.
Тоесть при клике по любому элементу страницы выводится алерт.
А как исключить input[type=submit] ?

Код :
this.element.closest('form').find(':not(input[type=submit])').on('click', function () {
alert(1);
});
Не работает...

zlodeeev 16.07.2012 16:36

Вечная морока с этим тоже. Я делаю так: вешаю событие на клик по всему document и событие на клик по элементу который надо отделить. Потом в обработчик клика по элементу добавляю изменение переменной, например submit_click = true, что позволяет мне выделить клик по элементу. А в обработчик клика по document пишу само действо при клике вне элемента(т.е. клику в любой части страницы кроме выделенного нами) с проверкой этой самой переменной if(submit_click){*значит клик по кнопке был и ничего делать не нао*} else {*делаем то, что необходимо при клике вне элемента*}, и в конце прибавляю изменение переменной submit_click = false...

Deff 16.07.2012 21:40

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form onsubmit="return false">
<input type="text"/>
<input type="submit"/>
</form>
<script type="text/javascript">
$("form *").not("[type='submit']").on('click', function () {
 alert(1);
});
</script>

devote 16.07.2012 21:43

Цитата:

Сообщение от Deff
:not[type='submit']

это шо за псевдоселектор? впервые вижу. Даже для джуквери думаю он будет не знаком

devote 16.07.2012 21:45

<form>
    <input type="text" />
    <input type="text" />
    <input type="submit" />
</form>
<script>
    alert( document.querySelectorAll('form :not([type="submit"])').length );
</script>


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