我当然知道如何在每次进行选择时选择将jQuery选择器限制到特定元素的子元素(即$('#left ul')选择所有ul为#left的子元素。虽然这很简单,如果我要对#left的各个孩子进行一系列操作,那么继续编写$('#left ul'),$('#left p')是有点麻烦的, $('#left ...')。相反,我宁愿只能暂时将潜在的选择器限制在#left的孩子身上。例如:
...some code that established #left as the "scope" of any future selectors;
$('ul').css(...); //actually selects $('#left ul')
$('p').css(...); //actually selects $('#left p')
...some code that re-established the full DOM as the "scope";
$('ul').css(...); //selects all ul, not just children of #left
$('p').css(...); //selects all p, not just children of #left
谢谢!
答案 0 :(得分:2)
只需依赖上下文并找到。
var $l = $('#left')
, ul = $l.find('ul')
, p = $l.find('p');
答案 1 :(得分:0)
“$”方法可以接收2个参数:选择器和上下文。因此,您可以使用以下语法:
$('.children_selector',$('.the_parent_selector'))
但是,要避免使用$(选择器,上下文)。您可以编写一个函数,“覆盖”$函数,并在里面编写代码。看看:
(function($)
{
//here the $ selects the elements inside the first element with the class xpto
})(function(a){return $(a,$('.xpto')[0]);});
无论如何,我不喜欢找到这种结构。出于维护目的,获得更多代码行比使用更少的模糊代码行更好。