В коде psuedo это - то, что я хочу.
var selector = $(this).cssSelectorAsString(); // Made up method...
// selector is now something like: "html>body>ul>li>img[3]"
var element = $(selector);
Причина состоит в том, что я должен выдать это к внешней среде, где строка является моим единственным способом обмениваться данными. Эта внешняя среда затем должна передать результат обратно, наряду с какой элемент обновить. Таким образом, я должен смочь сериализировать уникальный селектор CSS для каждого элемента на странице.
Я заметил, что jQuery имеет a selector
метод, но это, кажется, не работает в этом контексте. Это только работает, если объект был создан с селектором. Это не работает, если объект был создан с объектом узла HTML.
Теперь я вижу, что плагин существовал (с тем же именем, о котором я тоже думал), но вот просто несколько быстрый JavaScript, который я написал. Необходимо не учитывать идентификаторы или классы элементов - только структура (и добавляет : eq (x)
, где имя узла неоднозначно).
jQuery.fn.getPath = function () {
if (this.length != 1) throw 'Requires one element.';
var path, node = this;
while (node.length) {
var realNode = node[0], name = realNode.localName;
if (!name) break;
name = name.toLowerCase();
var parent = node.parent();
var siblings = parent.children(name);
if (siblings.length > 1) {
name += ':eq(' + siblings.index(realNode) + ')';
}
path = name + (path ? '>' + path : '');
node = parent;
}
return path;
};
Я тоже иногда виновен в этой практике, храним временных интервалов в объекте даты и используя GetTime (), как предложено Notnoop.
Это работает. Вопреки определенным мнению, это, безусловно, работает. Я просто игнорирую, что интервал может быть представлен непреднамеренной датой. Для меня быстрый и грязный способ добавить интервал, скажем, [6 лет, 6 месяцев, 6 дней, 6 часов, 6 минут, 6 секунд] до свидания.
-121--2364341-jQuery-getPath - хорошая отправная точка: она даст вам предки товара, как это:
var path = $('#foo').getPath();
// e.g., "html > body > div#bar > ul#abc.def.ghi > li#foo"