Получить id объекта
Добрый день =)
Такая проблема, есть пользовательское выделение, необходимо просмотреть всех родителей этого выделения и получить их id. function selection_parents(){ var empty = new Array() $target=$(window.getSelection().getRangeAt(0).startContainer.parentNode) var range = window.getSelection().getRangeAt(0); for (i=0;i<$target.parents().length;i++) { empty[i]=$target.parents()[i].tagName var $currentobject = $($target).parents()[i]; alert($currentobject.attr("id")) // выводит пустой alert, хотя id у тегов есть. } } |
Цитата:
<html id="id-1"> <head> <style type="text/css"> #id5 { width: 100px; height: 100px; background: red; } </style> </head> <body id="id0"> <div id="id1"> <div id="id2"> <div id="id3"> <div id="id4"> <div id="id5"></div> </div> </div> </div> </div> <script type="text/javascript"> document.getElementById('id5').onclick = function () { var parent = this.parentNode; var arr = new Array(); arr.push(parent); while (parent.nodeName != 'HTML') { parent = parent.parentNode; arr.push(parent); } for (var i = 0; i < arr.length; i++) alert('nodeName=' + arr[i].nodeName + '\nid=' + arr[i].id); } </script> </body> </html> |
Спасибо за ответ, Ваш вариант действительно предпочтительнее.
Единственный оставшийся вопрос это как с помощью: var range = window.getSelection().getRangeAt(0); Получить такой же объект как: document.getElementById('id5') Всё остальное понятно. |
https://developer.mozilla.org/en-US/docs/DOM/Selection
http://www.w3.org/TR/DOM-Level-2-Tra...ge/ranges.html может здесь чего можно накопать первый и последний объект в выделении получить можно <body id="id0">div <div id="id1">div <div id="id2">div <div id="id3">div <div id="id4">div <div id="id5">div</div> </div> </div> </div> </div> <script> document.body.onmouseup = function () { var mas = []; mas.push(document.getSelection().anchorNode.parentNode.getAttribute('id')); mas.push(document.getSelection().focusNode.parentNode.getAttribute('id')); alert(mas) } </script> |
Всё получилось =)
Спасибо! |
Цитата:
я лично не понял как получить их все (на сегодня уже зае-ся переводить с английского :D ) UPD: структура может быть разной, поэтому для произвольного выделения получение первого и последнего ещё не говорит о том, что там между ними, в общем я пока не понял как получить массив их всех |
Часовой пояс GMT +3, время: 19:29. |