2015-06-14 2 views
0

Я пытаюсь пройти через родительские divs и получить нижнюю позицию последнего дочернего div.jQuery - Loop через родительский div, получить нижнюю позицию последнего дочернего div

<main id="swipe-page"> 
    <div class="dragend-page"> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
    </div> 
    <div class="dragend-page"> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
    </div> 
    <div class="dragend-page"> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
     <div class="page-content"></div> 
    </div> 
</main> 

Нижняя позиция последней страницы-контента DIV будет установлен в качестве общей высоты родительского dragend страниц дел. Как мне это сделать?

$.each($('.dragend-page'), function(i, dragend_page) { 
    $('.page-content', dragend_page).each(function() { 
     var p = this.position(); 
     console.log(p.bottom); 
    }); 
}) 

Это получает нижнее положение всех дочерних divs, а не только последнее. А функция позиция должна быть неправильным, потому что это возвращение «this.position не является функцией»

+0

Попробуйте .страничный контент: последний как селектор. Тогда вам также не нужен каждый звонок. Позиция - это правильная функция, но внутри каждого из них вам нужно будет делать $ (это), поскольку это функция jQuery, а не функция Dom. – dman2306

+0

И this.position() должен быть $ (this) .position() –

ответ

2

, как @Rudi упомянуть в комментариях https://api.jquery.com/position/ возвращает объект, содержащий свойства верхнего и левого .. так что вы можете использовать этот

$('.dragend-page').each(function(i, dragend_page) { 
    var lastDiv = $(this).find('.page-content:last-child'); 
    var bottomPosition = lastDiv.position().top + lastDiv.outerHeight(true); 
    console.log(bottomPosition); 

}) 

этот код выведет нижнее положение последнего .стр-контента в каждом .dragend-странице

+0

https://api.jquery.com/position/ возвращает объект, содержащий свойства сверху и слева. – Rudi

+0

@Rudi Спасибо .. Я обновил свой ответ –

+0

спасибо @ Mohamed-Yousef. Затем я добавляю $ (this) .height (p); чтобы изменить родительскую высоту, но она не меняется, когда я перехожу к следующему слайду. . $ ("Салфетки-страница #") dragend ({ \t \t \t afterInitialize: функция() { \t \t \t this.container.style.visibility = "видимый"; \t \t \t}, \t \t \t onSwipeEnd : функция() { \t \t \t \t вар next_slide = ParseInt (this.page) + 1; \t \t \t \t window.location.hash = "слайд =" + next_slide; \t \t \t \t $ каждый (функция (я, dragend_page) { \t \t \t \t \t вар lastDiv = $ (это) .find ('страниц контента.: Последний ребенок '(' dragend-страница.').) ; \t \t \t \t \t var p = lastDiv .position(). Top + lastDiv.outerHeight (true); \t \t \t \t \t $ (this) .height (p); \t \t \t \t}) \t \t \t} \t \t}); – steeped

1

this даст Вам позицию последнего DIV без зацикливания через дивы

$(function(){ 
    console.log($(".dragend-page :last-child").last().position()); 
}); 
Смежные вопросы