Это действительно странно. Если я использую jQuery .find()
для поиска дочерних элементов, которые имеют атрибуты данных во время события прокрутки, прокрутка страницы будет многократно добавлять и удалять идентификатор для родителей этих элементов.Использование jQuery для выбора элементов с атрибутами данных присваивает нулевой идентификатор его родительским элементам
Это трудно описать, но вот воспроизводимый тест: http://jsfiddle.net/8fouvx9p/
var groups = $(".group");
$(window).bind("scroll resize orientationchange", function() {
showGroup();
});
function showGroup() {
$(groups).each(function() {
var group = $(this),
elements = $(group).find("[data-animation]");
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
<div class="group">
<div data-animation="test" class="test">Test</div>
<p data-animation="test" class="test">Test</p>
<span data-animation="test" class="test">Test</span>
</div>
Убедитесь, что предварительный просмотр достаточно того, что есть пространство для прокрутки мало, то проверьте один из «теста «элементы и прокрутка вверх и вниз. Вы увидите, что в Firefox, он добавляет и удаляет идентификатор null
для тестовых элементов при прокрутке:
В Safari, это происходит менее последовательно - но когда это произойдет, идентификатор начнет с sizzle
.
Если я изменю .find("[data-animation]")
на .find(".test")
, этого не произойдет.
С учетом sizzle
ID, который иногда появляется в Safari, я предполагаю, что это связано с ошибкой в Sizzle (движке селектора jQuery), а не с тем, что я делаю неправильно в своем собственном коде?
Ваша функция отсутствует что-то? потому что я не вижу ваш скриншот в fire fox и 'showGroup' на самом деле ничего не делает с элементами – PhilVarg
@PhilVarg, nope - если я просмотрю свою скрипту в Firefox, я получаю результаты на скриншоте. И да, 'showGroup()' даже не делает ничего, кроме выбора элементов, что является всей загадкой :-) – daGUY
это, должно быть, проблема с firefox 41. просто обновлено с 39, и это не произошло на 39, но произошло на 41.0.1. или как вы упомянули проблему с jquery, взаимодействующим с ff и сафари. я ничего не вижу в коде, который будет делать это – PhilVarg