Jump to content
  • 0

jQuery отслеживает CSS-класс который уже убран


yustnip
 Share

Question

Добрый вечер!

 

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

 

Для наглядности код в JSFiddle - http://jsfiddle.net/yustnip/92wrmk85/1/

 

Теперь уже по коду в JSFiddle. Сначала при наведении на красный блок все хорошо, он изменяется на зеленый, но если кликнуть сначала на вторую кнопку и потом на обратно на первую, то красный блок начнет меняться на синий, что не нужно.

 

Это происходит потому что, несмотря на удаление через removeClass(), jQuery продолжает отслеживать класс 'b-main-infographics__slide--second' и добавляет класс 'b-main-infographics__slide--second-active' (синий).

 

Подскажите, пожалуйста, как правильно сделать, чтобы все-таки в указанном сценарии цвет в первом блоке при наведении менялся на зеленый?

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0
Полагаю, спасла функция unbind(). 

И опять же по сути вернулись к тому, откуда начинали.

 

Не навешивайте по сотню раз обработчики событий, смотрите внутри самого обработчика что вам нужно делать. Навели мышку — событие такое "Ага, так, а что там у нас переменная показывает, что там нам делать надо?".

Link to comment
Share on other sites

  • 0

Какой же ужас с классами.

 

Вы при клике не переопределяйте по 20 раз события наведения мыши и отведения, а 1 раз навешайте событие, в котором смотрите по переменной какая кнопка была нажата.

 

А клик уже просто будет менять переменную со статусом и классы.

Link to comment
Share on other sites

  • 0
Дальше своих best practice заглядывали?)

 

Заглядывал и вижу ужас. b и main можно спокойно выкинуть и забыть, т.к. даже при такой вёрстке видно, что основным логическим блогом является инфографика.

Link to comment
Share on other sites

  • 0

Спасибо за ответы. Классы наверно все-таки надо было упростить для наглядности примера.  :) 

 

Вы при клике не переопределяйте по 20 раз события наведения мыши и отведения, а 1 раз навешайте событие, в котором смотрите по переменной какая кнопка была нажата.   А клик уже просто будет менять переменную со статусом и классы.

 

 

Спасибо за совет. Попробую переделать, отпишусь в теме.

Link to comment
Share on other sites

  • 0

Странно какой ужас БЭМ наводит на простых обывателей )))

почему сразу на простых, и почему он не должен наводить ужас? Если вы БЭМите при верстке лендингов и сайтов на 3-5 страниц, то лучше не отвечайте ))

Вам нужно создать 1 обыкновенный банан, а вы делаете гориллу с бананом и джунгли в придачу. А потом удивляетесь, когда на вас косо поглядывают.

Edited by advokatua
Link to comment
Share on other sites

  • 0

 

Странно какой ужас БЭМ наводит на простых обывателей )))

почему сразу на простых, и почему он не должен наводить ужас? Если вы БЭМите при верстке лендингов и сайтов на 3-5 страниц, то лучше не отвечайте ))

Вам нужно создать 1 обыкновенный банан, а вы делаете гориллу с бананом и джунгли в придачу. А потом удивляетесь, когда на вас косо поглядывают.

 

А какая разница где бэм именование классов применять ? И почему нельзя в лендингах,

вы правда понимаете о чем бэм ?

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy