如何使用“this”作为选择器的一部分?

时间:2012-06-23 14:04:47

标签: javascript jquery

我试着这样做:

$(this + ' li:not(:nth-last-child(2)):not(:last-child)').hide()

完整代码示例:

$('.comments').each(function(){
    $(this + ' li:not(:nth-last-child(2)):not(:last-child)').hide()
    var template = $('#expand').html();
    $(this).prepend(template)
});

我需要将它作为“每个”函数运行,因为我想稍后放入条件。

3 个答案:

答案 0 :(得分:4)

尝试

$('li:not(:nth-last-child(2)):not(:last-child)', this).hide();

来自docs

  

jQuery(selector [,context])

     

selector - 包含选择器表达式

的字符串      

context - 要用作上下文的DOM元素,文档或jQuery

因此,您可以使用this作为上下文参数:

$('.comments').each(function(){
    $('li:not(:nth-last-child(2)):not(:last-child)', this).hide()
    var template = $('#expand').html();
    $(this).prepend(template)
});

答案 1 :(得分:2)

如果您要在li:not(:nth-last-child(2)):not(:last-child)中找到所有this,可以使用find()

$(this).find('li:not(:nth-last-child(2)):not(:last-child)').hide();

另外值得注意的是,如果您知道您要查找的元素只有一个级别,那么您应该使用children()代替find()

答案 2 :(得分:0)

这是一个对象,而不是一个字符串,你可以附加其他字符串以构建你需要的选择器。

只需使用find()来遍历代码:

$('.comments').each(function(){
    $(this).find('li').not(':nth-last-child(2)').not(':last-child').hide();
    var template = $('#expand').html();
    $(this).prepend(template);
});