имеет этот код, который проверяет, является ли класс в поле зрения, и если он добавляет класс, но по какой-то причине он работает. Я пытаюсь добавить класс box-active, только если divs in view.JQuery Добавление класса, когда элемент находится в поле зрения
Я был на это какое-то время, можете ли вы, ребята, сказать мне, что не так с кодом? и возможное исправление или как я могу это исправить.
codepen: http://codepen.io/salman15/pen/rLRZrJ
Jquery
$(document).ready(function() {
$('#next').click(function() {
if ($('.in1,.in2,.in3').next('.t1,.t2,.t3').length) {
$('.t1').animate({
left: '-1000px'
})
$('.in1').removeClass('in1')
.next('.t1')
.addClass('in1');
$('.t2').animate({
right: '-1000px'
})
$('.in2').removeClass('in2')
.next('.t2')
.addClass('in2');
$('.t3').animate({
bottom: '-1000px'
})
$('.in3').removeClass('in3')
.next('.t3')
.addClass('in3');
}
});
$('#prev').click(function() {
if ($('.in1,.in2,.in3').prev('.t1,.t2,.t3').length) {
$('.t1').animate({
left: '-1000px'
})
$('.in1').removeClass('in1')
.prev('.t1')
.addClass('in1');
$('.t2').animate({
right: '-1000px'
})
$('.in2').removeClass('in2')
.prev('.t2')
.addClass('in2');
$('.t3').animate({
bottom: '-1000px'
})
$('.in3').removeClass('in3')
.prev('.t3')
.addClass('in3');
}
});
});
$.fn.isVisible = function() {
// Am I visible?
// Height and Width are not explicitly necessary in visibility detection, the bottom, right, top and left are the
// essential checks. If an image is 0x0, it is technically not visible, so it should not be marked as such.
// That is why either width or height have to be > 0.
var rect = this[0].getBoundingClientRect();
return (
(rect.height > 0 || rect.width > 0) &&
rect.bottom >= 0 &&
rect.right >= 0 &&
rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.left <= (window.innerWidth || document.documentElement.clientWidth)
);
};
if ($('.box').isVisible()) {
setTimeout(function(){
$('.box').removeClass('box-active')}, 4000);
} else{
setTimeout(function(){
$('.box').addClass('box-active')}, 4000);
};
Почему вы добавили свой полный проект? : P Вы можете просто добавить соответствующий код –
Иногда я получаю запросы на html: D – Salman
Вы повторяете функции щелчка снова и снова ... jquery - это своего рода беспорядок. Вам нужна только функция ONE click .. then if. То, как у вас есть, я удивляюсь, что все происходит так, как вы ожидаете. – Scott