开发者

Jquery Click Variable Loop

开发者 https://www.devze.com 2023-03-15 05:23 出处:网络
I am working on getting assigning a dynamic variable within Jquery in which the buttons could change to be more or less 开发者_运维知识库so I figured a loop would be best. (that rimes oo god it\'s got

I am working on getting assigning a dynamic variable within Jquery in which the buttons could change to be more or less 开发者_运维知识库so I figured a loop would be best. (that rimes oo god it's gotten to be that fun). So here is the break down in which I can not seem to get to figured out.

$(".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);

  });
});

For each class which are buttons add a click in which the id has a number to the end of it which removes the class selected but then replaces with the same number used in the id above. I can't get this to work and have thought about using loops but when I do it goes the same number of times the loop is for. I'm trying to just create a number of click functions that allows for the variable to be dynamic to make it so I can have more or less buttons.


I tested your code and it works fine, here's the example I made. (minus your plugin)

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


Your code should work just fine, if the options for the show and hide works.

I tested your code, only with the options for the show and hide reduced (as I don't know what plugin you use for that custom easing), and it works just fine:

http://jsfiddle.net/EJyn5/

Edit:

Judging by your comment to Brandons answer; perhaps you are starting your elements with index 1 instead of index 0?


If you want to avoid the loop, this should work (assuming that the .img elements are between the .acc_trigger elements).

<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);
});

You can try it out here: http://jsfiddle.net/EJyn5/.


You should be able to use jQuery's live function to do this without having to use loops or anything.

$('.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);
});

Documentation on Live: http://api.jquery.com/live/

Description: Attach a handler to the event for all elements which match the current selector, now and in the future.

0

精彩评论

暂无评论...
验证码 换一张
取 消