$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
Есть ли простой способ получить селектор$(this)
? Есть способ выбрать элемент с помощью его селектора, но как насчет получения селектора из элемента ?
$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
Есть ли простой способ получить селектор$(this)
? Есть способ выбрать элемент с помощью его селектора, но как насчет получения селектора из элемента ?
Ответы:
Итак, в комментарии выше задающий вопрос
Fidilip
сказал, что на самом деле ему / ей нужно получить путь к текущему элементу.Вот сценарий, который «взбирается» по дереву предков DOM, а затем создает довольно конкретный селектор, включающий любые атрибуты
id
илиclass
на выбранном элементе.Посмотрите, как он работает на jsFiddle: http://jsfiddle.net/Jkj2n/209/
Например, если бы вы щелкнули второй элемент вложенного списка в HTML-коде ниже, вы бы получили следующий результат:
HTML>BODY>UL>LI>UL>LI#sub2.subitem.otherclass
источник
join(" > ");
, я получу непосредственных потомков и, следовательно, более строгий путь.:: ПРЕДУПРЕЖДЕНИЕ ::
.selector устарел с версии 1.7, удален с версии 1.9
У объекта jQuery есть свойство селектора, которое я видел вчера, когда копался в его коде. Не знаю, определено ли это в документации, насколько он надежен (для проверки в будущем). Но работает!
Изменить : если вы найдете селектор внутри события, эта информация в идеале должна быть частью самого события, а не элемента, потому что элемент может иметь несколько событий щелчка, назначенных с помощью различных селекторов. Решением было бы использовать обертку вокруг
bind()
иclick()
т. Д., Чтобы добавлять события, а не добавлять их напрямую.Селектор передается как свойство объекта с именем
selector
. Доступ к нему какevent.data.selector
.Попробуем это на некоторой разметке ( http://jsfiddle.net/DFh7z/ ):
Отказ от ответственности : помните, что, как и в случае с
live()
событиями, свойство селектора может быть недопустимым, если используются методы обхода DOM.Приведенный ниже код НЕ будет работать, поскольку он
live
зависит от свойства селектора, которое в данном случае являетсяa.parent()
недопустимым селектором.Наш
addEvent
метод сработает, но вы тоже увидите неправильный селектор -a.parent()
.источник
No Such jQuery Method Exists
В сотрудничестве с @drzaus мы разработали следующий плагин jQuery.
jQuery.getSelector
Минифицированный Javascript
Использование и подводные камни
Fiddle с тестами QUnit
http://jsfiddle.net/CALY5/5/
источник
$.map
* опционально разделителями (требуется раздеваться странные пустые тэгами) * Вы не должны проверитьhasOwnProperty
вforeach
петле , чтобы быть в безопасности?' > '
приведет к возврату селектора элемента.Вы пробовали это?
источник
*
селектор, он очень медленный!Я выпустил плагин jQuery: jQuery Selectorator , вы можете получить такой селектор.
источник
Попробуй это:
источник
Просто добавьте слой поверх функции $ следующим образом:
Теперь вы можете делать такие вещи, как
и вернет «a» даже в более новых версиях jQuery.источник
http://www.selectorgadget.com/ - букмарклет, специально разработанный для этого варианта использования.
Тем не менее, я согласен с большинством других людей в том, что вам следует просто изучить селекторы CSS самостоятельно, попытки сгенерировать их с помощью кода нецелесообразны. :)
источник
Я добавил несколько исправлений в исправление @ jessegavin.
Это вернется сразу же, если у элемента есть идентификатор. Я также добавил проверку атрибута имени и селектор nth-child на случай, если у элемента нет идентификатора, класса или имени.
Имя может нуждаться в области видимости в случае, если на странице есть несколько форм и одинаковые входные данные, но я еще не обработал это.
источник
Я получал несколько элементов даже после вышеперечисленных решений, поэтому я расширил работу dds1024, добавив еще больше точных элементов dom.
например, DIV: nth-child (1) DIV: nth-child (3) DIV: nth-child (1) СТАТЬЯ: nth-child (1) DIV: nth-child (1) DIV: nth-child (8) DIV : nth-child (2) DIV: nth-child (1) DIV: nth-child (2) DIV: nth-child (1) H4: nth-child (2)
Код:
источник
Это может помочь вам выбрать путь к выбранному элементу HTML -
источник
Я написал этот простой плагин jQuery.
Это проверяет идентификатор или имя класса и пытается указать как можно более точный селектор.
источник
Вы пытаетесь узнать имя текущего тега, по которому был выполнен щелчок?
Если да, сделайте это ..
Вы не можете получить "селектор", в вашем случае "селектор"
*
.источник
Код Javascript для того же самого, если кому-то нужно, так как мне это нужно. Это всего лишь перевод только выбранного выше ответа.
источник
Принимая во внимание некоторые ответы, прочитанные здесь, я хотел бы предложить следующее:
Может быть, полезно создать плагин jQuery?
источник
Спасибо, p1nox!
Моя проблема заключалась в том, чтобы снова сфокусироваться на вызове ajax, который изменял часть формы.
Мне просто нужно было инкапсулировать вашу функцию в плагин jQuery:
источник
Это не покажет вам путь к DOM, но выведет строковое представление того, что вы видите, например, в отладчике Chrome при просмотре объекта.
https://developer.chrome.com/devtools/docs/console-api#consolelogobject-object
источник
Как насчет:
Я не верю, что jQuery хранит использованный текст селектора. В конце концов, как бы это работало, если бы вы сделали что-то вроде этого:
источник
$('div').find('a').selector
находитсяdiv a
. Если события создаются не с помощью функций jQuery, а с помощью оболочки, я считаю, что селектор может быть передан в качестве аргументов данных обработчику событий.Лучшим ответом будет
источник