ФорумПрограммированиеJavaScript → jQuery on click и ajax

jQuery on click и ajax

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 6 ноября 2015 г. 12:50

    Я думаю все знают что вот такая хуйня для элемента находящегося в контейнере обновляемом через ajax работать не будет

    
    $('selector').on('click', function() {
    //...
    })
    

    по этому в таких ситуациях принято делать так

    
    $(document).on('click', 'selector', function() { 
    //...
    })
    

    но тут я столкнулся с ситуацией когда такой вариант тоже не работает. И хуй знает почему. Нужны советы как отлаживать и что делать?

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 12:52, спустя 1 минуту 46 секунд

    да все знают, но он всегда работает, ибо он не может не работать. косяк в другом 100% - ищи.

    Спустя 10 сек.

    он устроен банально просто.

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 12:57, спустя 4 минуты 41 секунду

    @Crank, может нужен .live()? Раньше все его юзали активно, сейчас в коде не встречаю что-то

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 12:58, спустя 1 минуту 1 секунду

    live depracated

    в новых версиях on

    ещё в каких-то версиях вроде для этого delegate использовался или что-то подобное

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 12:58, спустя 18 секунд

    @Crank, может нужен .live()? Раньше все его юзали активно, сейчас в коде не встречаю что-то

    @adw0rd, ну ты мамонт

    Спустя 10 сек.

    live depracated

    в новых версиях on

    ещё в каких-то версиях вроде для этого delegate использовался или что-то подобное

    @Sinkler, .bind

    Спустя 26 сек.

    потом уницифировали api до комбайна on()

    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 6 ноября 2015 г. 13:06, спустя 7 минут 49 секунд

    Код обернут в $(document).ready так что ситуация с тем что скрипт исполнился до подкрузки DOM исключаем.

    По факту получается что

    
    $('selector').on('click', function() {
    //...
    })
    

    работает до обновления родительского контейнера черех ajax, но залупа конская не работает после

    
    $(document).on('click', 'selector', function() { 
    //...
    })
    

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

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 13:09, спустя 3 минуты 11 секунд

    @adw0rd, ну ты мамонт

    @phpdude, стараюсь не использовать jquery, но иногда приходится, заставляет окружение :-(

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 13:12, спустя 2 минуты 56 секунд

    @adw0rd, ну ты мамонт

    @phpdude, стараюсь не использовать jquery, но иногда приходится, заставляет окружение :-(

    @adw0rd, думаешь angular православнее jq?)

    Спустя 21 сек.

    Код обернут в $(document).ready так что ситуация с тем что скрипт исполнился до подкрузки DOM исключаем.

    По факту получается что

    
      $('selector').on('click', function() {
      //...
      })
      

    работает до обновления родительского контейнера черех ajax, но залупа конская не работает после

    
      $(document).on('click', 'selector', function() { 
      //...
      })
      

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

    @Crank, хуль как девственица, весь код показывай. можешь на gist.github.com положить

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 13:20, спустя 8 минут 16 секунд

    @phpdude, а я не про ангуляр. Тем более они решают разные задачи

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 6 ноября 2015 г. 13:22, спустя 1 минуту 39 секунд

    Сразу предупреждаю, там пиздец. Это собранная страница речь идет о событиях на конопках +,-, удалить для блока добавленых в корзину товаров order-form__basket, что бы он не был пустым надо в него что ни будь добавить.

    Это сам js

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 13:22, спустя 8 секунд

    @adw0rd, не важно

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 13:44, спустя 21 минуту 52 секунды

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

    двоечники блеядь

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 14:04, спустя 19 минут 52 секунды

    @Crank, вешайся на dom элемент, например body.

    
    $('body').on('click', '.order-form__basket-plus', function () {
      console.log('test');
    });
    
    Сапожник без сапог
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 6 ноября 2015 г. 14:12, спустя 8 минут 25 секунд

    @phpdude, ставлю для примера на кнопку +

    
    $('body').on('click', '.order-form__basket-plus', function(e) {
            console.log('+');
            FOrder.basketPlus($(this));     
            return false;
        });
    

    как уже было сказано, тогда обработчик начинает работать только после обновления контейнера через ajax т.е. если сначала нажать "-" висящий на
    $('.order-form__basket-minus').on('click', function() {

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 ноября 2015 г. 14:16, спустя 3 минуты 32 секунды

    как уже было сказано, тогда обработчик начинает работать только после обновления контейнера через ajax

    @Crank, пиздеж же)

    Спустя 12 сек.

    сделай поглядим

    явно ты косяк

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!