Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   скрипт не видет измененый код DOM (https://javascript.ru/forum/jquery/84830-skript-ne-videt-izmenenyjj-kod-dom.html)

ufaclub 09.01.2023 19:29

скрипт не видет измененый код DOM
 
такой код

<a  class="color_item">1</a>
<a  class="color_item">2</a>
<a  class="color_item">3</a>
<a  class="color_item">....</a>
<a  class="color_item">10</a>


$(document).ready(function(){


$('a.color_item').hover(function(evet) {
event.preventDefault();
....
тут скрипт работает
});

$('a.color_item').click(function() {
$('a.color_item').removeClass('click');
$(this).toggleClass('click');
$('a.color_item').addClass('blochover');
});

});


т.е по клику добавляется класс .blochover


<a  class="color_item click blochover">1</a>
<a  class="color_item blochover">2</a>
<a  class="color_item blochover">3</a>
<a  class="color_item blochover">....</a>
<a  class="color_item blochover">10</a>


как сделать чтобы после клика и добавления класса blochover

перестало работать условие hover

$('a.color_item').hover(function(evet) {
.....
});



т.е нужно что то типа



$('a.color_item:not(.blochover)').hover(function(evet) {
event.preventDefault();
....
тут скрипт работает
});



но правило not(.blochover) почему то не работает. Наверно потому что скрипт не читает измененный DOM

как сделать что hover бы смотрел код который вот прямо сейчас измененый?

ufaclub 09.01.2023 19:33

$('a.color_item:not(a.blochover)').on("mouseover", function () {

});


так тоже не работает фильтр на класс .blochover

Aetae 09.01.2023 19:52

Чувак, $(<selector>) получает элемент по селектору <selector> вот прям там, где вызван, тогда, когда вызван. И всё. Он не следит магически ни за какими изменениями, просто получил(или не получил) элемент и всё. Иначе это бы была безумно сложная (и никому не нужня) хрень.

Просто решение в лоб: прям в твоей hover функции проверяй на наличие селектора прежде чем что то делать, типа:
if ($(this).is('.blochover')) return false;


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