только первый элемент в jquery каждый цикл обновляется

0

Привет, я просто пытаюсь сделать каждый цикл над элементами, содержащими фронт класса, но только первый элемент обновляется по какой-либо причине, пожалуйста, помогите. Может быть, это глупая ошибка, но я не могу ее найти.

jsfiddle:

http://jsfiddle.net/sVTCK/7/

HTML:

<div class="wrapper">
    <div class="front"></div>
    <div class="front"></div>
    <div class="front"></div>
    <div class="front"></div>
    <div class="front"></div>
    <div class="front"></div>
</div>

JQuery:

function setSlide(rows, dimension) {
    var topPos = 0;
    var leftPos = 0;
    $(".front").each(function(i, e) {
        topPos++;
        if (i % rows === 0) {
            topPos = 0;
            leftPos++;
        }
        var position = topPos * dimension + " " + (leftPos - 1) * dimension;
        e.style.backgroundPosition = position;  
        e.innerHTML =  e.style.backgroundPosition;
    });
}
setSlide(3,200);

CSS:

.front{
    width:200px;
    height:200px;    
    background:url(some image);
    border:1px solid black;
    float:left
}

.wrapper{
    overflow:hidden;
    width:610px;    
}
  • 0
    Вы хотите добавить только размер в квадратах?
  • 0
    Это было бы изображение в конечном продукте
Теги:

2 ответа

5
Лучший ответ
function setSlide(rows, dimension) {
    var topPos = 0;
    var leftPos = 0;
    $(".front").each(function(i, e) {
        topPos++;
        if (i % rows === 0) {
            topPos = 0;
            leftPos++;
        }
        var position = topPos * dimension + 'px ' + (leftPos - 1) * dimension +'px';
        e.style.backgroundPosition = position;  
        e.innerHTML =  e.style.backgroundPosition;
    });
}
setSlide(3,200);

РАБОЧАЯ ДЕМО.

  • 4
    Чтобы объяснить, позиции (и длины в целом) нужны единицы. Если только они не равны нулю, вот почему ваш первый элемент работал.
  • 0
    : O блин как и ожидалось глупая ошибка :) спасибо за ответ.
1

ok Я преувеличил javascript stlightly в jquery, так как вы его использовали и перешел с javascript ванили:

function setSlide(rows, dimension) {
    var topPos = 0;
    var leftPos = 0;
    var front = $('.front');
    $.each(front, function(index, val) {
        topPos++;
        if (index % rows === 0) {
            topPos = 0;
            leftPos++;
        }
        var position = topPos * dimension + "px, " + (leftPos - 1) * dimension + 'px';
        $(this).css('backgroundPosition', position);
        $(this).append(position);
    });
}
setSlide(3,200);

http://jsfiddle.net/sVTCK/18/

Если вы можете сказать нам, что вы пытаетесь сделать с помощью оператора if, это поможет добавить фоновую позицию... Вы должны быть в курсе jQuery, если у вас есть это на странице, так как это будет быстрее, и вы также должны кэшировать ваши переменные

  • 0
    Вы неправы. видеть, проверять элемент, только первый элемент обновляется. Выше ответ правильный. Я забыл "px"
  • 0
    прочитайте, что я сказал .... Я упомянул заявление if и исходную позицию. Это также довольно раздражительно с вашей стороны, просто чтобы взять на себя чьи-то усилия и затраченное время. Старайтесь быть немного скромнее, когда просите о помощи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню