Подтвердить что ты не робот

Как получить идентификатор элемента click с jQuery

У меня есть следующий 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 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; 
    }); 

});

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

$container.cycle(id); 

для этого

$container.cycle(7); 

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

Спасибо заранее!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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