我试着这样做:
$(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)
});
我需要将它作为“每个”函数运行,因为我想稍后放入条件。
答案 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);
});