2012-01-11 3 views
0

Предположим следующую структуру:jQuery: Доступ к уникальному объекту, содержащемуся в уникальном родителе?

<span class="container"> 
    <video class="video"> 
     <source ... /> 
    </video> 
    <div class="controls"> 
     <div class="play">Play</div> 
    </div> 
</span> 

Использование JQuery Я добавляю функции нажмите на нагрузке документа, например, так:

$(document).ready(function() { 

    $('.playpause').click(function() { 

     var play = $(this); 
     var video = ''; // D: 

    }); 

}); 

Предположим, что нет никаких ограничений на количество видео на странице или дочерние родительские объекты «элементов управления». Значение Я не хочу использовать $(this).parent().parent().find('.video').

+0

Ваш вопрос не ясен. Возможно, вы ищете '$ (this) .closest ('. Video')'? – bfavaretto

ответ

1

closest method кажется хорошей пригонки здесь

$(this).closest('.container').find('.video'); 
+0

OP говорит, что в элементе «.container» может быть несколько «.video». – musefan

+0

Это работает, спасибо за понимание моей ясности. –

0

Я просто добавить элемент данных со ссылкой видео по ссылке: Играть Затем

var video = $(this).data('ref'); 
1
$(".video", $(this).parents(".container")) 

должен работать.

1

вы можете использовать prev() function, чтобы получить предыдущий элемент, так что это будет работать независимо от количества видео и/или контролирует элементы внутри родительского контейнера ...

var video = $(this).parent().prev(); 

пробоя ...

$(this) получает "играть" класс DIV

.parent() получает "Элементы управления" класс Дива

.prev() получить предыдущий элемент (т. согласование "видео" класс ДИВ)

here is a sample JS Fiddle to show the concept working

0

Что-то вроде этого:

var video = $('video', $(this).parentsUntil('span', '.container')); 
Смежные вопросы