JQuery выбрать предка

Да, вы можете сделать это в CSS - в основном сделать ваш div шире, чем страница, чтобы исправить слишком закругленные края, а затем левые, чтобы компенсировать, с нижним радиусом границы, используя как x & amp; y и отрицательное нижнее поле для компенсации зазора:

border-bottom-left-radius: 50% 200px; // across half & up 200px at left edge
border-bottom-right-radius: 50% 200px; // across half & up 200px at right edge
width: 160%; overflow: hidden; // make larger, hide side bits
margin-bottom: -50px; // apply negative margin to compensate for bottom gap
position: relative; left:-30%; // re-position whole element so extra is on each side (you may need to add display:block;)
30
задан Keavon 19 May 2014 в 17:03
поделиться

6 ответов

Попробуйте использовать parent () или closest () в комбинации, возможно, с селектором, чтобы определить, какой предок должен совпадать. Например, найдите div ближайшего предка с идентификатором.

$('.click-me').click( function() {
      var ancestorId = $(this).closest('div[id]');
      alert(ancestorId);
});
2
ответ дан 27 November 2019 в 23:48
поделиться

Вы ищете parent () ? Документ jQuery для родительского селектора. Если для вашего сценария он отличается, объясните, каков ваш ожидаемый результат.

0
ответ дан 27 November 2019 в 23:48
поделиться

http://api.jquery.com/parent / и , http://api.jquery.com/parents /

$(".click-me").click(function(){
    var ancestorId = $(this).parent().parent();
    alert(ancestorId)
});

возвратит отделения с ids

0
ответ дан 27 November 2019 в 23:48
поделиться

Я получаю ошибку в ie:

Строка: 16 Ошибка: «undefined» имеет значение null или не является объектом

. Это указывает на следующее:

j=l.replace(/^[\-\d\.]+/,"")

Предполагается, что необходимо проверить значение null? Просто догадка.

-121--3995753-

Нет, это не помешает кэшированию прокси-сервера, а также метатегу. Необходимо отправить заголовок HTTP Cache-Control: no-cache .

http://www.w3.org/Protocols/HTTP/Issues/cache-private.html

См. также: http://www.mnot.net/cache_docs/#META

-121--3643162-

Это действительно зависит от того, чего вы хотите достичь. Выполнить поиск всех предков независимо от используемого класса? Или вы хотите искать все элементы, которые являются предками и имеют определенный класс (предок-x в вашем случае)?

Если вы хотите циклически проходить через любых предков, просто используйте .parent () (есть отличный пример, как циклически проходить через все элементы) или .parents ()

$(".click-me").click(function(){
    var parentElements = $(this).parents().map(function () {
        return this.tagName;
    })
    // whatever else you want to do with it
});

Возможно, наилучшим подходом будет использование .parents () до тех пор, пока не будет получен элемент с определенным идентификатором или классом. Это действительно зависит от того, что ты хочешь сделать.

0
ответ дан 27 November 2019 в 23:48
поделиться

Вы имеете в виду что-то подобное?

$('.click-me').click(function() {
    var $theAncestor = $(this).closest('#ancestor-1');
}

Это будет искать через все родоначальницы до тех пор пока спичка не будет найдена.

http://api.jquery.com/closest/

EDIT:

Джером, ваш вопрос можно интерпретировать несколькими способами. Это говорит к силе и гибкости jQuery.

Пожалуйста, рассмотрите следующее.

Во-первых, чтобы ответить на ваш вопрос, да, можно использовать jQuery для выбора предка элемента.

Думаю, можно предположить, что вы знаете о возможности jQuery выбирать любой элемент, будь то предк или его потомок через:

$('#myElement')

В примере click-me, если вы хотите получить набор всех предков элемента, используйте:

$(this).parents()

или

$(this).parents(selector)

Но имейте в виду, что это пройдет через ВСЕ предки, возвращающие все, или все, что совпадает, когда задан селектор.

Если вы хотите вернуть немедленного родителя, используйте:

$(this).parent()

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

$(this).closest(selector)

Но имейте в виду, что он вернет только первое совпадение, а если текущий элемент (это) совпадает, то вернет это совпадение.

Надеюсь, это поможет.

11
ответ дан 27 November 2019 в 23:48
поделиться

Попробуйте parent () для непосредственного родительского элемента.

$(".click-me").click(function() {
  var ancestor = $(this).parent();
  alert(ancestor)
});

Или родители () для всех совпадающих элементов-предков.

$(".click-me").click(function() {
  var ancestors = $(this).parents(".some-ancestor");
  alert(ancestors)
});

Или closest () для первого наиболее подходящего элемента (либо предка, либо себя).

$(".click-me").click(function() {
  var ancestor = $(this).closest(".some-ancestor");
  alert(ancestor)
});

Разница между родителями () и closest () неуловима, но важна. closest () вернет текущий элемент, если он совпадает; parent () возвращает только предков . Многим не нужна возможность возврата текущего элемента. closest () также возвращает только один элемент; parent () возвращает все совпадающие элементы.

44
ответ дан 27 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: