Как получить идентификатор выбранного элемента с помощью 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:

$(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). Итак, мой вопрос: как я могу получить идентификатор ссылки, по которой щелкнули, и передать его в эту строку?

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


person Adam    schedule 20.10.2011    source источник
comment
# не является допустимым символом в [id].   -  person zzzzBov    schedule 20.10.2011


Ответы (5)


Ваши идентификаторы #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; 
});
person Rocket Hazmat    schedule 20.10.2011
comment
Числовые идентификаторы фактически разрешены в HTML5. - person mkataja; 14.07.2014

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

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1);
    $container.cycle(id); 
    return false; 
}); 
person Richard Dalton    schedule 20.10.2011
comment
Официальная спецификация говорит, что идентификаторы всегда должны начинаться с буквы верхнего или нижнего регистра, а не с цифры (или знака решетки). Многие браузеры разрешат это, но вы не можете этого ожидать. - person Blazemonger; 20.10.2011

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

person David Neale    schedule 20.10.2011

@Adam Просто добавьте функцию, используя onClick="getId()"

function getId(){console.log(this.event.target.id)}
person Anurag M.    schedule 06.12.2019

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

$container.cycle(id.replace('#','')); 
person Joseph Marikle    schedule 20.10.2011