Jquery Click Переменная Loop - PullRequest
       31

Jquery Click Переменная Loop

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

Я работаю над тем, чтобы назначить динамическую переменную в Jquery, в которой кнопки могли бы измениться на более или менее, поэтому я решил, что цикл будет лучше.(что, черт возьми, боже, это так весело).Таким образом, вот разрыв, в котором я не могу понять, чтобы понять.

$(".acc_trigger").each(function(j) {

    $("#accord" + j).click(function() {
        $(".selectedimg").hide('drop', { direction: 'down' }, 1000);
        $(".selectedimg").removeClass("selectedimg");

        $("#accordimg"+ j ).addClass("selectedimg");
        $("#accordimg"+ j ).show('drop', { direction: 'up' }, 1000);

  });
});

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

Ответы [ 4 ]

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

Если вы хотите избежать цикла, это должно сработать (при условии, что элементы .img находятся между элементами .acc_trigger).

<div class="acc_trigger" id="accord0">0</div>
<div class="img" id="accordimg0">0</div>
<div class="acc_trigger" id="accord1">1</div>
<div class="img" id="accordimg1">1</div>
<div class="acc_trigger" id="accord2">2</div>
<div class="img" id="accordimg2">2</div>

$(".acc_trigger").click(function() {
    $(".selectedimg").hide(1000);
    $(".selectedimg").removeClass("selectedimg");

    $(this).next(".img").addClass("selectedimg");
    $(this).next(".img").show(1000);
});

Вы можете попробовать это здесь: http://jsfiddle.net/EJyn5/.

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

Ваш код должен работать нормально, если параметры для show и hide работают.

Я проверил ваш код, только с уменьшенными параметрами для show и hide (так как я не знаю, какой плагин вы используете для этого пользовательского замедления), и он прекрасно работает:

http://jsfiddle.net/EJyn5/

Редактировать:

Судя по вашему комментарию кОтвет Брэндона;возможно, вы начинаете свои элементы с индекса 1 вместо индекса 0?

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

Я проверил ваш код, и он отлично работает, вот пример, который я сделал. (без вашего плагина)

http://jsfiddle.net/5tLZk/3/

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

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

$('.CssClassThatAllYourButtonsShare').live('click', function() {
        $(".selectedimg").hide('drop', { direction: 'down' }, 1000);
        $(".selectedimg").removeClass("selectedimg");

        //Extract the number from the current ID
        var j = $(this).attr('id').match(/\d+$/);

        $("#accordimg"+ j).addClass("selectedimg");
        $("#accordimg"+ j).show('drop', { direction: 'up' }, 1000);
});

Документация в реальном времени: http://api.jquery.com/live/

Описание:Присоедините обработчик к событию для всех элементов, которые соответствуют текущему селектору, сейчас и в будущем.

...