припустимо, у мене така розмітка:
<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, ви можете використовувати like
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