2011-04-02 2 views
2

У меня есть несколько ссылок на моей странице и вы хотите запустить JQuery Script, когда пользователь нажал на него. Раньше я добавлял уникальный идентификатор к ссылке, например.Как проверить класс нажатой ссылки

<a id="user_1" class="mylink"> 

На моем случае щелчка я затем извлек ID и начал производить обработку

userid = $(this).attr('id').split('_')[1]; 

Теперь у меня есть проблема, что моя страница может иметь несколько связей с тем же идентификатором, и, конечно же, это невозможно (afaik). Поэтому я думаю, что я должен добавить его как класс, не так ли? например

<a class="mylink user_1"> 

Это лучший способ? И как я мог затем извлечь userID ('1') из класса? Разумеется, jQuery-Script также должен заботиться о том, чтобы существовали некоторые a-ссылки без класса user _ ,,,. Большое спасибо заранее!

ответ

5

Наилучший способ сделать это с пользовательскими атрибутами data-*. Они соответствуют стандарту HTML5 и работают повсеместно в браузерах старше этого стандарта.

Так что ваша ссылка может выглядеть следующим образом:

<a data-user="1" class="mylink"> 

Ваш обработчик щелчка может выглядеть следующим образом:

$('a').click(function(){ 
    var userId = $(this).data('user'); 
}); 

Это работает, потому что data импорт data-* атрибутов.

Если нет атрибута data-user, userId будет undefined.

+0

Brillant! Я читал об этой новой функции, реализованной в jQuery 1.4.3, но я думал, что она ограничивается только HTML5. Большое спасибо!! – K232

1

this.className или если вы хотите сделать это с помощью объекта JQuery (нет никаких оснований для этого): $(this).attr('className')

Из этой строки можно извлечь идентификатор с регулярным выражением (/userid_([0-9]+)/) ...


Однако использование атрибутов HTML5 data- было бы лучше. Поскольку браузеры очень терпимы о неизвестных атрибутов они не нарушают ничего, и будет нормально работать с HTML4 и XHTML:

<a class="mylink" data-userid="1">---</a> 
... 
var userid = $(this).data('userid'); 

Хорошая вещь: если вы поставите действительный JSON в атрибуте данных, .data('yourAttr') автоматически возвращает объект вместо строки.

+0

отлично работает, большое спасибо! – K232

0

Попробуйте это

http://jsfiddle.net/Wa6gN/

+0

Это на самом деле код, который у меня есть, но не решение ....? Даже хуже, это шаг назад, потому что это не извлекает идентификатор из имени ... – K232

Смежные вопросы