Как получить идентификатор кликаемого элемента с помощью jQuery - PullRequest
38 голосов
/ 20 октября 2011

У меня есть следующий 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.... */

и следующий скрипт jQuery:

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

});

элемент управления ссылками 'pagerlink' относится к слайд-шоу jQuery Cycle.Если я поменяю эту строку:

$container.cycle(id); 

для этого

$container.cycle(7); 

, это сработает ... (очевидно, переходя только к слайду № 7).Итак, мой вопрос: как я могу получить идентификатор ссылки, по которой щелкают, и передать ее в эту строку?

Заранее спасибо!

Ответы [ 4 ]

66 голосов
/ 20 октября 2011

Ваши идентификаторы #1, а cycle просто хочет передать ему номер.Вам необходимо удалить # перед вызовом cycle.

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

. Кроме того, идентификаторы не должны содержать символ #, это недопустимо (числовые идентификаторы также недопустимы).Я предлагаю изменить идентификатор на что-то вроде 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; 
});
7 голосов
/ 20 октября 2011

Вам просто нужно удалить хеш с начала:

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1);
    $container.cycle(id); 
    return false; 
}); 
3 голосов
/ 20 октября 2011

Ваш идентификатор будет передан как # 1, # 2 и т. Д. Однако # недопустим в качестве идентификатора (идентификаторы префикса селекторов CSS с #).

2 голосов
/ 20 октября 2011

Во-первых, у вас не может быть только числа для вашего идентификатора, если вы не используете HTML5 DOCTYPE. Во-вторых, вам нужно либо удалить # в каждом идентификаторе, либо заменить его следующим:

$container.cycle(id.replace('#','')); 
...