jqueryjquery-cycle

How to get ID of clicked element with jQuery


I have the following html:

<a href="#" id="#1" class="pagerlink" >link</a>
<a href="#" id="#3" class="pagerlink" >link</a>
<a href="#" id="#2" class="pagerlink" >link</a>
/*etc.... */

and the following jQuery script:

$(document).ready(function() {
    
    var $container = $('.gallery_r').cycle({ 
        fx:     'scrollHorz', 
        speed:   500, 
        timeout: 0 
    }); 
    
    $('a.pagerlink').click(function() { 
        var id = $(this).attr('id');
        $container.cycle(id); 
        return false; 
    }); 
    
});

the 'pagerlink' links control are to jQuery Cycle slideshow. If I swap this line:

$container.cycle(id); 

for this

$container.cycle(7); 

It works. (obviously only navigating to slide number 7). So, my question is how can I pick up the ID of the link being clicked and pass it into that line?


Solution

  • Your IDs are #1, and cycle just wants a number passed to it. You need to remove the # before calling cycle.

    $('a.pagerlink').click(function() { 
        var id = $(this).attr('id');
        $container.cycle(id.replace('#', '')); 
        return false; 
    });
    

    Also, IDs shouldn't contain the # character, it's invalid (numeric IDs are also invalid). I suggest changing the ID to something like pager_1.

    <a href="#" id="pager_1" class="pagerlink" >link</a>
    
    $('a.pagerlink').click(function() { 
        var id = $(this).attr('id');
        $container.cycle(id.replace('pager_', '')); 
        return false; 
    });