jQuery选择器从文档中选择 如何从除root之外的其他位置进行选择? 假设我想从HTML对象中选择一些孩子。
对于此
function dothis(obj)
{
$j("#tabs").removeClass();
$j("#tabs>ul").removeClass();
$j("#tabs>ul>li>a").each(function()
{
var tabNum = $j(this).attr("href").replace("#", "");
var tabContent = $j("div[id=" + tabNum + "]");
tabContent.removeClass();
$(tabContent).before("<br><h1>" +$j(this).text() + "</h1>\n" );
});
$j("#tabs>ul").each(function()
{
$j(this).empty();//remove Ul links on top
});
}
我想引用我作为参数传入的HTML对象(obj
)中的选择器,而不是从文档中选择。
这有效!
$j("#tabs", obj).removeClass();
答案 0 :(得分:4)
您可以为选择器指定第二个参数以精确上下文:
$j("#tabs", obj).removeClass();
答案 1 :(得分:3)
您可以使用:
$j(obj).find('#tabs')
指定您想要的元素上下文,以便查找内容。有些人更喜欢这种语法:
$j('#tabs', obj)
我不推荐。它在内部将它转换为与我上面提到的完全相同(.find()
),其次,由于切换顺序,它更难阅读。
答案 2 :(得分:1)
如果obj
是HTML元素,您可以使用context
参数jQuery(selector, context)
jQuery( selector, [ context ] )
selector
包含选择器表达式的字符串
context
要用作上下文的DOM元素,文档或jQuery
即。 $j("#tabs",obj).removeClass()
您还可以在 jQuery对象上使用.find()
方法查找匹配元素的子元素,并在内部$(selector, context)
仅调用$(context).find(selector)
。
例如:
function dothis(obj) {
var $obj = $j(obj);
$obj.find('#tabs').removeClass();
// ....
}
虽然,对于任何一个示例,#tabs
将搜索ID为tabs
的元素,但文档中只能有一个元素具有任何给定ID,您可能需要切换到如果要使此功能在两个不同的上下文中工作,请使用类。