Ответ 1
Вы можете использовать любой из них [начиная с самого быстрого]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
скажем, у меня такая разметка:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
и я хочу выбрать #moo.
почему $('#foo').find('span')
работает, но $('span', $('#foo'));
не работает?
Вы можете использовать любой из них [начиная с самого быстрого]
$("#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');
оба, похоже, работают.
см. скрипту: http://jsfiddle.net/maniator/PSxkS/
Вы можете использовать опцию find
для выбора элемента внутри другого. Например, чтобы найти элемент с id txtName в конкретном div, вы можете использовать как
var name = $('#div1').find('#txtName').val();