Как получить все родители элементов с помощью jquery?

Как получить все родители элементов с помощью jquery? я хочу сохранить этих родителей в переменной, чтобы я мог использовать позже в качестве селектора.
такие как <div><a><img id="myImg"/></a></div>
GetParents ('myImg'); вернет "div a" что-то вроде этого

5 ответов


/// получить массив всех элементов родителей:

allParents = $("#myElement").parents("*")

/ / / получить вложенный селектор через родителей элемента:

function GetParents(id) {
    var parents = $("#" + id).parents("*");
    var selector = "";
    for (var i = parents.length-1; i >= 0; i--) {
        selector += parents[i].tagName + " ";
    }

    selector += "#" + id;

    return selector;
}

GetParents ('myImage') вернет вложенный селектор: HTML BODY DIV a #myImage

обратите внимание, почему вы хотите это, но его повторно использовать в качестве селектора.


вам не нужно захватывать их селекторы, так как вы можете использовать их непосредственно с jQuery впоследствии.

Если вы хотите использовать всех родителей позже, вы можете сделать что-то вроде:

var parents = $("#element").parents();
for(var i = 0; i < parents.length; i++){
  $(parents[i]).dosomething();
}

каждый элемент имеет только один реальный родитель. Чтобы получить доступ и сохранить его, напишите следующее:

myParent = $("#myElement").parent();

Если вам нужны родители родители тоже, используйте .родители()

дополнительную информацию смотрите в документации:

http://docs.jquery.com/Traversing/parent#expr

http://docs.jquery.com/Traversing/parents#expr


вы можете использовать parents () для получения вашего непосредственного родителя и их родителей на дереве. вы также можете передать селектор как arg, чтобы получить только родителей, которые соответствуют определенным критериям. Например:

$('#myelement').parents('[id$=container]')

чтобы получить всех родителей, у которых есть атрибут id, значение которого заканчивается текстом "контейнер"


вы можете получить все теги родителей элемента такой:

var sParents = $('#myImg').parents('*').map(function() {                
      return this.tagName;
    }).get().join(' ');

вы также можете заменить этого.имя тега С это.id например или другие атрибуты