Ale*_*lex 82 jquery parent-child jquery-selectors
假设我有这样的标记:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
Run Code Online (Sandbox Code Playgroud)
我想选择#moo.
为什么$('#foo').find('span')
有效,但$('span', $('#foo'));
不是?
Jis*_*A P 121
你可以使用任何一个[从最快开始]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
Run Code Online (Sandbox Code Playgroud)
Pra*_*ana 51
实际上,$('#id',这个); 会在任何后代级别选择#id,而不仅仅是直接的孩子.试试这个:
$(this).children('#id');
Run Code Online (Sandbox Code Playgroud)
要么
$("#foo > #moo")
Run Code Online (Sandbox Code Playgroud)
要么
$("#foo > span")
Run Code Online (Sandbox Code Playgroud)
Sai*_*ala 14
您可以使用find
option 来选择另一个内部的元素。例如,要在特定 div 中查找 id 为txtName的元素,您可以使用 like
var name = $('#div1').find('#txtName').val();
Run Code Online (Sandbox Code Playgroud)
为什么不使用:
$("#foo span")
Run Code Online (Sandbox Code Playgroud)
要么
$("#foo > span")
Run Code Online (Sandbox Code Playgroud)
$('span', $('#foo'));
在我的机器上正常工作;)
....但是 $('span', $('#foo')); 不起作用?
该方法称为提供选择器上下文。
在此,您向 jQuery 选择器提供第二个参数。它可以是任何 css 对象字符串,就像您传递直接选择或 jQuery 元素一样。
例如。
$("span",".cont1").css("background", '#F00');
Run Code Online (Sandbox Code Playgroud)
上面的行将选择容器内具有名为 的类的所有跨度cont1
。
看看这里 - 查询元素的子元素:
$(document.getElementById('parentid')).find('div#' + divID + ' span.child');