admin管理员组文章数量:1426058
I want to use intersection observer in my project and I want to use jquery how intersection observer works in jQuery. I tried to pass jQuery element in the observe function but it didn't work.
const aboutUsObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if(entry.isIntersecting) {
$(".active").removeClass("underlined");
$("#aboutUsNavItem").toggleClass("underlined");
} else {
$(".active").removeClass("underlined");
}
});
}, {});
aboutUsObserver.observe($("#about-us-section"));
I want to use intersection observer in my project and I want to use jquery how intersection observer works in jQuery. I tried to pass jQuery element in the observe function but it didn't work.
const aboutUsObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if(entry.isIntersecting) {
$(".active").removeClass("underlined");
$("#aboutUsNavItem").toggleClass("underlined");
} else {
$(".active").removeClass("underlined");
}
});
}, {});
aboutUsObserver.observe($("#about-us-section"));
Share
Improve this question
edited Aug 4, 2021 at 6:46
mohammadyahyaq
asked Aug 4, 2021 at 6:11
mohammadyahyaqmohammadyahyaq
831 silver badge9 bronze badges
2
-
1
You are missing either a
#
or.
in$("aboutUsNavItem")
– Carsten Løvbo Andersen Commented Aug 4, 2021 at 6:14 - I have added it in the question, thank you – mohammadyahyaq Commented Aug 4, 2021 at 6:47
2 Answers
Reset to default 3You need to pass an actual element when calling observe()
, and not a jQuery object. You can access the underlying element of a jQuery object by using .get()
or [0]
:
// Option 1:
aboutUsObserver.observe($("#about-us-section").get());
// Option 2:
aboutUsObserver.observe($("#about-us-section")[0]);
Even better: do you really need jQuery tho?
// Use document.querySelector
aboutUsObserver.observe(document.querySelector("#about-us-section"));
// Or use document.getElementById
aboutUsObserver.observe(document.getElementById("about-us-section"));
Just add [0] to the end of selector.
const aboutUsObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if(entry.isIntersecting) {
console.log("Here!")
$(".active").removeClass("underlined");
$("#aboutUsNavItem").toggleClass("underlined");
} else {
$(".active").removeClass("underlined");
}
});
}, {});
aboutUsObserver.observe($("#about-us-section")[0]);
<script src="https://cdnjs.cloudflare./ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="about-us-section" style="position:absolute; top:1000px">test</div>
本文标签: javascriptIntersection observer for jqueryStack Overflow
版权声明:本文标题:javascript - Intersection observer for jquery - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745410849a2657462.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论