12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- !(function ($, undefined) {
- $.fn.getSelector = function () {
- if (!this || !this.length) {
- return ;
- }
- function _getChildSelector(index) {
- if (typeof index === 'undefined') {
- return '';
- }
- index = index + 1;
- return ':nth-child(' + index + ')';
- }
- function _getIdAndClassNames($el) {
- var selector = '';
- // attach id if exists
- var elId = $el.attr('id');
- if(elId){
- selector += '#' + elId;
- }
- // attach class names if exists
- var classNames = $el.attr('class');
- if(classNames){
- selector += '.' + classNames.replace(/^\s+|\s+$/g, '').replace(/\s/gi, '.');
- }
- return selector;
- }
- // get all parents siblings index and element's tag name,
- // except html and body elements
- var selector = this.parents(':not(html,body)')
- .map(function() {
- var parentIndex = $(this).index();
- return this.tagName + _getChildSelector(parentIndex);
- })
- .get()
- .reverse()
- .join(' ');
- if (selector) {
- // get node name from the element itself
- selector += ' ' + this[0].nodeName +
- // get child selector from element ifself
- _getChildSelector(this.index());
- }
- selector += _getIdAndClassNames(this);
- return selector;
- }
- })(window.jQuery);
|