проблема с циклом для - PullRequest
0 голосов
/ 21 июня 2011

У меня есть цикл, который работает только для моего последнего элемента.Было предложено работать для каждого элемента.

for (var z=1; z<$('.page').length;z++){ 

$('#arrowUp_'+z).click(function(){
        $('#thumbsContainer_'+z).animate({top: '-='+93+'px'}, {duration: 1000});
        cont++;
        arrowThumbs();
    });

    $('#arrowDown_'+z).click(function(){
        $('#thumbsContainer_'+z).animate({top: '+='+93+'px'}, {duration: 1000});
        cont--;
        arrowThumbs();
    });
}

Если я заменю z на одно число, я смогу заставить его работать в этом случае.Но я не хочу повторять один и тот же процесс N раз.Поэтому я подумал, что было бы неплохо сделать цикл для ... но безуспешно

Может кто-нибудь объяснить, как это сделать ??Спасибо

1 Ответ

0 голосов
/ 21 июня 2011

Почему вы используете идентификаторы? почему вы не можете просто добавить класс для каждого элемента, например

<div id="arrowUp_1" class="arrowUp">

</div>

$('.arrowUp').click(function(){...});

также [то, что вы должны знать]

'- =' + 93 + 'px' бессмысленно, что вы можете иметь '- = 93px', все равно будет то же самое, что и строка, а не число. :)

cont ++ не предопределен раньше, и все ваше не работает, потому что animate () не так ... нажмите на ссылку, чтобы вы могли получить некоторую помощь с ней http://api.jquery.com/animate/

вы не помещаете {duration: 1000}, просто ставите 1000, поскольку это сам по себе атрибут и ожидает число [миллисекунд, а не объекта json] ...

UPDATE проверьте этот код ...

http://jsfiddle.net/JFRAb/3/

==============================================

CSS:

span {background: red;position: absolute; left: 0;}

JS

$(function() {
    $('div').click(function() {
        $('p').append($(this).text());
        //alert('text');
        var i = $(this).index($('ul div'));
        console.log($(this));
        $('ul span').eq(i).animate({
            left: '50%'
        }, 1000);
    });
});

HTML

<p>Test...</p>
<hr />
<ul>
    <div>Click 1</div>
    <div>Click 2</div>
    <div id="b">Click 3</div>
    <div>Click 4</div>
</ul>
<br /><br /><br /><br />
<ul>
    <span>Im thumb 1</span>
    <span>Im thumb 2</span>
    <span>Im thumb 3</span>
    <span>Im thumb 4</span>
</ul>

Это плохой пример выбора элемента :), но это лучшее решение для вас :) Я должен подумать :)

...