Skip to content

Instantly share code, notes, and snippets.

@phenomnomnominal
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phenomnomnominal/8df01a69df739564a891 to your computer and use it in GitHub Desktop.
Save phenomnomnominal/8df01a69df739564a891 to your computer and use it in GitHub Desktop.
var getCSSSelector = function () {
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 sameTagSiblings = parent.children(name);
if (sameTagSiblings.length > 1) {
allSiblings = parent.children();
var index = [].indexOf.call(allSiblings, realNode) + 1;
if (index > 1) {
name += ':nth-child(' + index + ')';
}
}
path = name + (path ? '>' + path : '');
node = parent;
}
return path;
}
// or maybe
//
// var fullPath = function (el) {
// var names = [];
// while (el.parentNode) {
// if (el.id) {
// names.unshift('#'+el.id);
// break;
// } else {
// if (el==el.ownerDocument.documentElement) {
// names.unshift(el.tagName.toLowerCase());
// } else {
// for (var c = 1, e = el; e.previousElementSibling; e = e.previousElementSibling, c++) {
// names.unshift(el.tagName.toLowerCase() + ':nth-child(' + c + ')');
// }
// }
// el = el.parentNode;
// }
// }
// return names.join(' > ');
//}
document.body.addEventListener('click', function (event) {
var target = event.target;
var $element = angular.element(target);
var data = $element.data();
var binding = null;
var model = $element.attr('ng-model');
var css = null
if (!model && data && data.$binding) {
binding = data.$binding[0];
} else {
css = getCSSSelector.call($element);
}
console.log(binding, model, css);
event.preventDefault();
event.stopPropagation();
return false;
});
// or this:
(function() {
var script = document.createElement("script");
script.src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js";
script.onload = script.onreadystatechange = setupElementSelector;
document.body.appendChild( script );
function setupElementSelector () {
$(document.body).on('click', '*', function () {
$el = $(this);
var repeater = findRepeater($el);
console.log(repeater);
event.preventDefault();
event.stopPropagation();
return false;
});
}
function findRepeater() {
return $el.closest('[ng-repeat]')
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment