有没有办法为jQuery中的一组命令定义上下文?

时间:2012-05-21 08:58:22

标签: jquery

jQuery.proxy()有一些我正在寻找的功能,但理想情况下我希望能够做到这样的事情:

$('#some-id').context(function(){
    $('.some-class').show();
    $('li').css('background','red');
});

其效果与:

相同
$('#some-id .some-class').show();
$('#some-id li').css('background','red');

jQuery是否有类似我context的方法?

2 个答案:

答案 0 :(得分:0)

您最接近的是在jQuery电话中定义上下文:

var $el = $('#some-id');
$('.some-class', $el).show();
$('li', $el).css('background','red');

你也可以使用链接:

$('#some-id')
    .find('.some-class').show().end()
    .find('li').css('background','red');

在这两种情况下,改进之处在于您只为初始选择器查询一次DOM(在这种情况下为'#some-id')。

答案 1 :(得分:0)

有一种叫做上下文的方法,但它会返回上下文。在jQuery中,如果要设置上下文,则可以将其作为第二个参数传递给jQuery选择器。以下是jQuery( selector [ , context ] )示例,您可以像$("input:radio", document.forms[0]);

一样使用它

了解有关传递上下文http://api.jquery.com/context/

的更多信息

有关检索上下文的详细信息,请参阅http://api.jquery.com/context/