jQuery-выбор элементов внутри элемента
допустим, у меня есть разметка, как это:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
и я хочу выбрать #moo.
почему $('#foo').find('span')
работает, а $('span', $('#foo'));
не ?
7 ответов:
вы можете использовать любой из них [начиная с самого быстрого]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
посмотреть
на самом деле, $('#id', this); выбрал бы #id на любом уровне потомка, а не только непосредственного ребенка. Попробуйте вместо этого:
$(this).children('#id');
или
$("#foo > #moo")
или
$("#foo > span")
почему бы просто не использовать:
$("#foo span")
или
$("#foo > span")
$('span', $('#foo'));
отлично работает на моей машине ;)
посмотреть здесь для запроса подэлемента элемента:
$(document.getElementById('parentid')).find('div#' + divID + ' span.child');
можно использовать
find
возможность выбора элемента внутри другого. Например, чтобы найти элемент с идентификатором txtName в частности, div, вы можете использовать какvar name = $('#div1').find('#txtName').val();
оба работают.
см скрипка:http://jsfiddle.net/maniator/PSxkS/
....но $('span', $('#foo')); не работает?
этот метод называется предоставлении селектор контексте.
В этом ты предоставьте второй аргумент селектору jQuery. Это может быть любая строка объекта css так же, как вы передали бы для прямого выбора или элемента jQuery.
например.
$("span",".cont1").css("background", '#F00');
В приведенной выше строке будут выбраны все промежутки внутри контейнера с именем класса
cont1
.