2009-09-24 7 views
50

Использование jQuery как выбрать один дочерний элемент? Я посмотрел на проникающем API и знаю, что я могу выбрать все непосредственные дочерние img элементов, как это:Как выбрать один дочерний элемент с помощью jQuery?

$(this).children('img'); 

И чтобы выбрать первый ребенок img элемент я мог бы использовать индекс, как это:

$(this).children('img')[0]; 

Но я предполагаю, что я отчасти удивлен, что я не могу это сделать:

$(this).child('img'); // no subscript, returns single element 

Или я что-то пропустил?

ответ

32

No. Каждая функция jQuery возвращает объект jQuery, и именно так оно и работает. Это ключевая часть магии jQuery.

Если вы хотите получить доступ к основной элемент, у вас есть три варианта ...

  1. Не использовать JQuery
  2. Используйте [0] ссылаться на него
  3. Продлить JQuery делать то, что вы хотите. ..

    $.fn.child = function(s) { 
        return $(this).children(s)[0]; 
    } 
    
+0

Ах, ха! Вот и все. Я ожидал элемент img (пытающийся ссылаться на его свойство src) вместо объекта jQuery. Теперь я просто использую attr() для доступа к свойству 'src'. –

+0

Спасибо за 3). Я мог бы подумать об этом. :) –

+6

Нет. Если я использую, например, 'find (" div ") [0]' Я не получу 'div' как объект jQuery. Я получу 'div' как HTMLElement. Чтобы получить 'div' как объект jQuery, нужно использовать' .eq (0) ', как сказал Грег ниже. – Green

80

Я думаю, что вы хотите сделать это:

$(this).children('img').eq(0); 

это даст вам объект Jquery, содержащий первый элемент IMG, а

$(this).children('img')[0]; 

даст вам сам IMG элемент.

+1

Обратите внимание, что использование find в первом ответе даст вам все элементы-потомки, тогда как ребенок даст вам только прямых детей. – Greg

3

Возможно, таким образом?

$('img', this)[0] 
+0

Это не обязательно будет выбирать прямой дочерний элемент и, как и принятый ответ, это вернет элемент, а не объект jQuery. – Septagram

0
<html> 
<title> 

    </title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap.css"> 
<body> 




<!-- <asp:LinkButton ID="MoreInfoButton" runat="server" Text="<%#MoreInfo%>" > --> 
<!-- </asp:LinkButton> --> 
<!-- </asp:LinkButton> --> 

<br /> 
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> 
<div> 
<a><span id="imgDownArrow_0" class="glyphicon glyphicon-chevron-right " runat="server"> MoreInformation</span></a> 
<div id="parent" class="dataContentSectionMessages" style="display:none"> 
    <!-- repeater1 starts --> 
     <!-- <sc:text field="Event Description" runat="server" item="<%#Container.DataItem %>" /> --> 
      <ul > 
       <li ><h6><strong>lorem</strong></h6></li> 
       <li ><h6><strong>An assigned contact who knows you and your lorem analysis system</strong></h6></li> 
       <li ><h6><strong>Internet accessible on-demand information and an easy to use internet shop</strong></h6></li> 
       <li ><h6><strong>Extensive and flexible repair capabilities at any location</strong></h6></li> 
       <li ><h6><strong>Full Service Contracts</strong></h6></li> 
       <li ><h6><strong>Maintenance Contracts</strong></h6></li> 
      </ul> 
    <!-- repeater1 ends --> 
</div> 
</div> 
<div> 
<a><span id="imgDownArrow_0" class="glyphicon glyphicon-chevron-right " runat="server"> MoreInformation</span></a> 
<div id="parent" class="dataContentSectionMessages" style="display:none"> 
    <!-- repeater1 starts --> 
     <!-- <sc:text field="Event Description" runat="server" item="<%#Container.DataItem %>" /> --> 
      <ul > 
       <li ><h6><strong>lorem</strong></h6></li> 
       <li ><h6><strong>An assigned contact who knows you and your lorem analysis system</strong></h6></li> 
       <li ><h6><strong>Internet accessible on-demand information and an easy to use internet shop</strong></h6></li> 
       <li ><h6><strong>Extensive and flexible repair capabilities at any location</strong></h6></li> 
       <li ><h6><strong>Full Service Contracts</strong></h6></li> 
       <li ><h6><strong>Maintenance Contracts</strong></h6></li> 
      </ul> 
    <!-- repeater1 ends --> 
</div> 
</div> 
<div> 
<a><span id="imgDownArrow_0" class="glyphicon glyphicon-chevron-right " runat="server"> MoreInformation</span></a> 
<div id="parent" class="dataContentSectionMessages" style="display:none"> 
    <!-- repeater1 starts --> 
     <!-- <sc:text field="Event Description" runat="server" item="<%#Container.DataItem %>" /> --> 
      <ul > 
       <li ><h6><strong>lorem</strong></h6></li> 
       <li ><h6><strong>An assigned contact who knows you and your lorem analysis system</strong></h6></li> 
       <li ><h6><strong>Internet accessible on-demand information and an easy to use internet shop</strong></h6></li> 
       <li ><h6><strong>Extensive and flexible repair capabilities at any location</strong></h6></li> 
       <li ><h6><strong>Full Service Contracts</strong></h6></li> 
       <li ><h6><strong>Maintenance Contracts</strong></h6></li> 
      </ul> 
    <!-- repeater1 ends --> 
</div> 
</div> 
<div> 
<a><span id="imgDownArrow_0" class="glyphicon glyphicon-chevron-right " runat="server"> MoreInformation</span></a> 
<div id="parent" class="dataContentSectionMessages" style="display:none"> 
    <!-- repeater1 starts --> 
     <!-- <sc:text field="Event Description" runat="server" item="<%#Container.DataItem %>" /> --> 
      <ul > 
       <li ><h6><strong>lorem</strong></h6></li> 
       <li ><h6><strong>An assigned contact who knows you and your lorem analysis system</strong></h6></li> 
       <li ><h6><strong>Internet accessible on-demand information and an easy to use internet shop</strong></h6></li> 
       <li ><h6><strong>Extensive and flexible repair capabilities at any location</strong></h6></li> 
       <li ><h6><strong>Full Service Contracts</strong></h6></li> 
       <li ><h6><strong>Maintenance Contracts</strong></h6></li> 
      </ul> 
    <!-- repeater1 ends --> 
</div> 
</div> 




</asp:Repeater> 


</body> 
<!-- Predefined JavaScript --> 
<script src="jquery.js"></script> 
<script src="bootstrap.js"></script> 

<script> 

$(function() { 
     $('a').click(function() { 
      $(this).parent().children('.dataContentSectionMessages').slideToggle(); 
     }); 
    }); 

    </script> 


</html> 
+0

$ (функция() { $ ('а') нажмите (функция() { $ (это) .parent() дети() slideToggle()..»DataContentSectionMessages.;. });} ) ; этот запрос поможет получить дочерний элемент родителя –

 Смежные вопросы

  • Нет связанных вопросов^_^