Поиск по контексту аналогичен .find()
, который выбирает самых глубоких потомков сначала перед переходом вверх по дереву DOM.:nth-child()
не заботится о родителе, если вы не указали родителя, поэтому каждый div
, который содержится (является потомком) какого-либо другого элемента #wrapper
или чего-либо внутри, выбирается.
Метод .children()
, как сказано в олове, ограничивает выбор дочерними элементами вашего элемента, поэтому все, что соответствует, всегда будет дочерним.Используйте это вместо этого, но передайте селектор :nth-child()
следующим образом:
var id = $o1.children('div:nth-child(2)').attr('id');
Или, как советует Ник Крейвер, используйте дочерний селектор >
, чтобы ограничить контекстный поиск дочерними элементами #wrapper
:
var id = $('> div:nth-child(2)', $o1).attr('id');