2013-05-31 2 views
0

Я новичок в javascript/jquery. Я пытаюсь выбрать из li элемент a div, в котором я стану 3 изображения. Таким образом, у меня есть эта переменная:jquery - get div from a li

var x = ui.item.parent().children()[i] 

Который является li (он работает, я проверить идентификатор), но как я могу получить от DIV x? (и после этого все 3 изображения, поэтому я могу изменить z-index изображений, которые я также не знаю, как).

<ul> 
    <li id="li1"> 
    <div> 
     <img class="1" src="img1.jpg" style="position:absolute;z-index=1"> 
     <img class="2" src="img2.jpg" style="position:absolute;z-index=2"> 
     <img class="3" src="img3.jpg" style="position:absolute;z-index=3"> 
    </div> 
    </li> 
</ul> 

Это код, который я пишу, но не работает (ошибка: Uncaught TypeError: Объект # не имеет метод 'найти')

for(var i=0;i<ui.item.parent().children().length-4;i++){ 
    var x =ui.item.parent().children()[i]; 
    x.find('img').css('z-index', '2'); 
       } 
+2

это недопустимый html? – Liam

+1

'$ (x) .closest (" div ")'? – Dogbert

+0

Как сказал Лиам, ваш HTML некорректен. У вас есть открытие и закрытие тегов в неправильном порядке. – crush

ответ

1

Исправьте HTML. Ваша уль заканчивается, прежде чем вы это сделаете. Как только у вас есть элемент jQuery, вы можете использовать функцию .find() для поиска своих дочерних элементов.

Например:

var x = $('li#yourid'); 

x.find('img').css('z-index', '2'); 
+0

Я получаю эту ошибку: Uncaught TypeError: Object # не имеет метода 'find' – raducup

+0

@ user2440433 Возможно, потому, что вы не передаете элемент listylement функции jQuery – Johan

+0

У меня нет идентификатора li, и я не хочу работа с id для li, я просто поставлю идентификатор для проверки, работает ли он, чтобы получить ли форму из списка. – raducup

0

вашего HTML не действует, вы закрытие li тега после ul и li не имеет открытый тега <.

Так правильно HTML является:

<ul> 
<li id="li1"> 
<div> 
<img class="1" src="..."> 
<img class="2"> 
<img class="3"> 
</div> 
</li> 
<ul> 

Теперь, чтобы получить DIV от х вы должны использовать .find():

var div = x.find('div'); 
+0

поиск не работает: Uncaught TypeError: Объект # не имеет метода 'найти' – raducup

+0

, если ваш 'вар x' действителен, он должен работать. Помните, что '.find()' - это метод jQuery, поэтому вам нужно загрузить его перед вашим Javascript. –

0

использования, как это

$("ul li").children("div").find("img").each(function(){ 
    alert($(this).attr('class')); 
}); 

See Demo

0

Я не знаю, является ли этот HTML только примером, но он неверно отформатирован. Она должна быть:

<ul> 
    <li id="li1"> 
     <div> 
      <img class="1" src="..."/> 
      <img class="2"/> 
      <img class="3"/> 
     </div> 
    </li> 
</ul> 

Чтобы установить Z-индекс: $ (х) .find ('IMG') CSS ('Z-индекс', '100');.

+0

find dos не работает, html - это просто, например, я могу поместить html, но слишком большой. – raducup

+0

Большое спасибо, работает, код для z-index хорош! – raducup

+0

что делать, если у меня есть 3 изображения, как выбрать второй? – raducup