Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2014, 16:16
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Почему функция то срабатывает то нет
Здравствуйте!

Объясните, пожалуйста, почему в этом случае функция $('span.addtocart-button').on('click', function() ... срабатывает при клике на кнопку "Добавить в корзину",
а в этом
- нет.

Последний раз редактировалось borus, 23.04.2014 в 16:18.
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2014, 16:56
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

Функция срабатывает в обеих случаях, проблема в условии дальше.

Функция .text() возвращает объединенный текст элементов которые вы выбрали.

$(".baget_select option:selected")
вернет вам два элемента во втором случае, один - в первом, соответствено во втором случае .text()
вернет вам "Выберите багетВыберите багет"
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2014, 17:40
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Ясно. Благодарю. Вот рабочий вариант http://jsfiddle.net/mrnobody/rErNh/6/

Последний раз редактировалось borus, 24.04.2014 в 09:57.
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2014, 11:15
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Здравствуйте.

Подобная ситуация. На странице никак не вызывается обработчик
$('span.addtocart-button').on('click', function(){...

в этом файле на 40-й строке. Скажите, пожалуйста, почему?
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2014, 11:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

borus,
Вы где-то перезаписываете этот элемент (вероятно в момент добавления второй кнопки).
Я при создании обработчика дабавил его в глобальную переменную "window.a", а после создания страницы сравнил его с элементом найденным по тому же селектору и мне выдало "false", что означает что это не тот элемент на который вы вешали обработчик.
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2014, 11:30
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Сообщение от tsigel Посмотреть сообщение
borus,
Вы где-то перезаписываете этот элемент (вероятно в момент добавления второй кнопки).
Я при создании обработчика дабавил его в глобальную переменную "window.a", а после создания страницы сравнил его с элементом найденным по тому же селектору и мне выдало "false", что означает что это не тот элемент на который вы вешали обработчик.
то есть это работает так: создается элемент, ему задаётся злополучный обработчик, а потом каким-то скриптом кнопка пересоздаётся и обработчика уже нет?
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2014, 11:31
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Цитата:
то есть это работает так: создается элемент, задаётся ему злополучный обработчик, а потом каким-то скриптом кнопка пересоздаётся и обработчика уже нет?
Да, именно так.
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2014, 11:33
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

а как отследить местонахождение скрипта, который делает эту шутку?
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2014, 11:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

borus,
Не, я был не прав. Там у инпута стоит disabled, его убираю и все работает
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2014, 11:56
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

tsigel,
странно, я убираю disabled у input.addtocart-button, нажимаю на "Добавить в корзину" и возникает окно о том, что добавилось, но скрипт призванный проверить, выбрано ли что-то в селекте не срабатывает. По крайней мере отладчик не останавливается внутри обсуждаемого обработчика на его первой строке:
var $elSelect = $(this).parent().prev().find('.baget_select');

Вопрос прежний, почему отладчик не попадает внутрь обработчика, т.е. почему обработчик не работает?

Последний раз редактировалось borus, 16.09.2014 в 12:01.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему alert не срабатывает для несуществующей переменной? Почемучкин Общие вопросы Javascript 10 16.08.2012 09:32
Клик срабатывает без щелчка на кнопке - почему?.. deivan Events/DOM/Window 3 13.08.2012 14:42
Почему скрипт срабатывает только после обновления страницы? Randomizer jQuery 2 01.09.2010 19:01
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01
Функция не возвращает false, почему? Vitaly jQuery 3 05.07.2009 16:05