“我的问题是我只想选择使用类名的最后一项。”
好的,所以在一般意义上,您将使用以下.last()
方法:
var lastItem = $('.itemAnchor').last();
除了 DOM 中没有该类的元素,因为(在你的小提琴中)它们都被注释掉了。这也是您在问题中显示的代码不起作用的原因。第一行:
var item = $('.itemAnchor')[6];
...将item
变量设置为undefined
. 选择器'.itemAnchor'
不返回任何元素,因此$('.itemAnchor')
是一个空的 jQuery 对象,并且它在 index 处没有元素6
。
您需要在使用语句删除开始和结束注释后'.itemAnchor'
获得的 html 上使用选择器,因此:.replace()
var href = $($('.hidden_elem')[0].innerHTML.replace('<!--','').replace('-->',''))
.find('.itemAnchor').last().attr('href');
演示:http: //jsfiddle.net/rtnNd/4/
编辑回应评论:
“我们如何才能在最后一个之前拿起 itemElement。”
如果您知道您总是希望倒数第二个项目使用.slice(-2,-1)
而不是.last()
,如下所示:http: //jsfiddle.net/rtnNd/5/
或者如果你知道你想要任何一个href
包含参数的选择器,h=
那么你可以使用像'.itemAnchor[href*="h="]'
with这样的选择器.find()
,在这种情况下你不需要.last()
or .slice()
:
var href = $($('.hidden_elem')[0].innerHTML.replace('<!--','').replace('-->',''))
.find('.itemAnchor[href*="h="]').attr('href');
演示:http: //jsfiddle.net/rtnNd/6/
请注意,尽管最后一种使用属性包含选择器的方法是拾取在任何地方href
都有文本“h =”的元素,因此它适用于您的情况,但也可以拾取或其他。您可以避免这种情况并进行如下测试:hh=something
math=easy
h=
var href = $($('.hidden_elem')[0].innerHTML.replace('<!--','').replace('-->',''))
.find('.itemAnchor')
.filter(function() {
return /(\?|&)h=/.test(this.href);
}).attr('href');
演示:http: //jsfiddle.net/rtnNd/7/