2012-04-15 3 views
-4

Я хочу выбрать дочерний элемент div с помощью jquery. Я стараюсь с детьми(), но не работаетВыбрать div children

<div class="main" id="this_456" onclick="change(456)"> 

<div id="title">some text</div> 

<div id="body">some text as well</div> 

</div> 

Javascript

function change(id) 
{ 
$('#this_'+id).children("#body").fadeOut(); 

} 
+0

Пробовали ли вы $ ('# это _' + идентификатор + '#body') Затухание(). Ну, он будет работать только в том случае, если вы знаете идентификатор ребенка, чтобы упростить его с помощью $ ('# body'). FadeOut(); – andreapier

+2

У меня есть подозрение, что у вас есть несколько из этой структуры, каждая из которых имеет элементы с идентификатором 'title' и' body'. Это правильно? –

+0

Да, я делаю @amnotiam – Ben

ответ

1

Ваш код работает, если вы укажете 456 в качестве аргумента, а не this_456 (см .: http://jsfiddle.net/aLxTz/).

Однако, поскольку <div id="body"/> идентифицирован по ID (#body), он избыточен, чтобы искать его внутри и другой элемент - он должен быть уникальным для всего документа. Используйте атрибут class="", если вы ожидаете иметь несколько экземпляров тела <div/>, например. <div class="body">...</div>.

Кроме того, обратите внимание на то, что обработчик onclick имеет переменную , заданную элементом контекста. Поскольку это элемент в самом вопросе, вы можете написать

<div class="main" id="this_456"> ... </div> 

$(".main").click(function() { 
    $(this).chlidren(".body").fadeOut(); 
}); 
0

Попробуйте этот код:

function change(id) { 
    $('#this_'+id+ ' > div').find("#body").fadeOut(); 
} 
0
<div class="main" id="this_456" onclick="change(this)"> 
<div id="title">some text</div> 
<div id="body">some text as well</div> 
</div> 

function change(elm) { 
    $(elm).children("#body").fadeOut(); 
} 

FIDDLE

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