Показать сообщение отдельно
  #2 (permalink)  
Старый 11.09.2012, 14:12
Аспирант
Отправить личное сообщение для vashurin Посмотреть профиль Найти все сообщения от vashurin
 
Регистрация: 01.04.2008
Сообщений: 52

Сообщение от aiaks Посмотреть сообщение
Добрый день =)

Такая проблема, есть пользовательское выделение, необходимо просмотреть всех родителей этого выделения и получить их 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 у тегов есть.
}
}
Не знаю, как у вас вызывается selection_parents и сколько можно выделить одновременно, но получение всех родителей можно сделать проще:
<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>
Ответить с цитированием