скажем, у меня есть такая разметка:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
и я хочу выбрать #moo.
почему $('#foo').find('span')
работает, а $('span', $('#foo'));
нет?
скажем, у меня есть такая разметка:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
и я хочу выбрать #moo.
почему $('#foo').find('span')
работает, а $('span', $('#foo'));
нет?
var ele = $("div #foo")
того, как вы можете получить отсюда
Ответы:
Фактически, $ ('# id', this); выбрал бы #id на любом уровне потомка, а не только на непосредственном потомке. Попробуйте вместо этого:
$(this).children('#id');
или
$("#foo > #moo")
или
$("#foo > span")
moo
, а не класс.
.children()
и .find()
они похожи, за исключением того, что первые перемещаются только на один уровень вниз по поддереву DOM.
Вы можете использовать find
опцию, чтобы выбрать элемент внутри другого. Например, чтобы найти элемент с идентификатором txtName в конкретном div, вы можете использовать как
var name = $('#div1').find('#txtName').val();
.... но $ ('span', $ ('# foo')); не работает?
Этот метод вызывается как обеспечивающий контекст селектора .
Здесь вы предоставляете второй аргумент селектору jQuery . Это может быть любая строка объекта css, как при прямом выборе, или элемент jQuery.
например.
$("span",".cont1").css("background", '#F00');
Вышеупомянутая строка выберет все промежутки в контейнере с именем класса cont1
.
оба вроде работают.
см. скрипку: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Кстати. это действительно работает: jsfiddle.net/fkling/k5X2r