:: WARNING ::
.selector устарел с версии 1.7, удален с 1.9
У объекта jQuery есть свойство селектора, которое я видел, когда копался в его коде вчера. Не знаю, насколько это определено в документах, насколько это надежно (для проверки в будущем). Но это работает!
$('*').selector // returns *
Редактировать : Если вы должны найти селектор внутри события, в идеале эта информация должна быть частью самого события, а не элемента, поскольку элемент может иметь несколько событий щелчка, назначенных с помощью различных селекторов. Решением было бы использовать обертку около bind()
, click()
и т. Д. Для добавления событий вместо непосредственного добавления.
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
Селектор передается как свойство объекта с именем selector
. Получите доступ к нему как event.data.selector
.
Давайте попробуем на какой-нибудь разметке (http://jsfiddle.net/DFh7z/):
<p class='info'>some text and <a>a link</a></p>
$('p a').addEvent('click', function(event) {
alert(event.data.selector); // p a
});
<ч />
Отказ от ответственности : Помните, что, как и в случае событий live()
, свойство селектора может быть недействительным, если используются методы обхода DOM.
<div><a>a link</a></div>
Приведенный ниже код НЕ будет работать, так как live
зависит от свойства селектора
в данном случае это a.parent()
- недопустимый селектор.
$('a').parent().live(function() { alert('something'); });
Наш метод addEvent
сработает, но вы также увидите неправильный селектор - a.parent()
.