Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблемы перехватов событий. Обработчик события jQuery toggle. (https://javascript.ru/forum/jquery/49403-problemy-perekhvatov-sobytijj-obrabotchik-sobytiya-jquery-toggle.html)

Rodger1956629 11.08.2014 20:25

Проблемы перехватов событий. jQuery перехватывает события раньше времени.
 
При выполнение вот этого кода jQuery, происходит перехват события и код php не выполняется. В частности, событие toggle не даёт произвести щелчок на ссылке и код php не выполняется:

$(document).ready(function() {
$('#menu_products > li > ul' )
.hide()
.click(function(event) {
event.stopPropagation();
});

$('#menu_products > li').toggle(function() {
$(this).find('ul').slideDown();
}, function() {
$(this).find('ul').slideUp();
});

});

Как обойти эту проблему?! Мне в любом случае, необходимо выполнить обработку запроса php до перехвата. А вот ссылка с php кодом, которая должна выполниться до перехвата при щелчке:

<a href="/?controller=category&id={$itemChild['id']}" title="{$itemChild['name']}">{$itemChild['name']}</a>

Заранее благодарю за помощь.)

tsigel 11.08.2014 20:28

уберите event.stopPropagation();

Rodger1956629 11.08.2014 20:31

Нет. Пробовал и ничего не получается. Нужны другие варианты. В частности, когда убираю функцию toggle или меняю её на другую функцию, то всё сразу же работает. Но мне нужна в любом случае функция toggle. Так что, нужны другие варианты.

tsigel 11.08.2014 20:34

$(document).ready(function() {

  var flag = true;

  $('#menu_products > li > ul' )
    .hide()
    .click(function(event) {
       event.stopPropagation();
    });
  
  $('#menu_products > li').click(function () {
      if (flag) {
        $(this).find('ul').slideDown();
      } else {
        $(this).find('ul').slideUp();
      }
      flag=!flag;
  });

});

Rodger1956629 11.08.2014 20:41

Так код php работает, но jQuery перестаёт. Немного не то. Т.е. мне нужно перейти по ссылке, до выполнения кода jQuery. Но как известно, объект DOМ перехватывает все сообщения и jQuery этим спокойно пользуется.

Rodger1956629 11.08.2014 20:44

Проблема пока не решена. Если сам разберусь, то отпишусь здесь.)

рони 11.08.2014 20:47

Rodger1956629,
нет давно toggle в jquery для кликов ... 100500 раз на форуме написано ... замена тут http://javascript.ru/forum/jquery/40...tml#post263492

tsigel,
на всякий случай http://api.jquery.com/slideToggle/

tsigel 11.08.2014 20:48

Что значит:
Цитата:

Сообщение от Rodger1956629 (Сообщение 325423)
Так код php работает, но jQuery перестаёт.


tsigel 11.08.2014 20:49

рони,
Да, я знаю, спасибо. Подзабыл, давно jQuery перестал юзать...

рони 11.08.2014 20:55

Цитата:

Сообщение от tsigel
уберите event.stopPropagation();

с условием если кликнули по ссылке
event.target.tagName && event.target.tagName != "A" &&  event.stopPropagation();


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