使用Javascript从Array中提取值

时间:2012-11-21 02:31:20

标签: javascript jquery arrays extract

我遇到了使用Javascript获取准确值的问题。

以下是我们在单项上课时的工作版本。 http://jsfiddle.net/rtnNd/

实际上,当代码块中有更多具有相同类的项目时(请参阅:http://jsfiddle.net/rtnNd/3),它只选取使用类名的第一个项目。

我的问题是我只想选择使用类名的最后一项。所以我使用了以下代码:

var item = $('.itemAnchor')[6]; 
var href = $($('.hidden_elem')[1].innerHTML.replace('<!--', '').replace('-->', '')).find(item).attr('href'); 

但它不起作用。我真的不知道为什么。

可能包含项目的代码使用相同的类,类可以在2个项目,3个项目或第6次使用。这就是为什么,我想只拿起要提取的最后一项。

你能解释一下,谢谢大家阅读我的问题。

1 个答案:

答案 0 :(得分:2)

  

“我的问题是我只想选择使用类名的最后一项。”

好的,所以在一般意义上你会使用.last()方法:

var lastItem = $('.itemAnchor').last();

除了DOM中没有该类的元素,因为(在你的小提琴中)它们都被注释掉了。这也是您在问题中显示的代码不起作用的原因。第一行:

var item = $('.itemAnchor')[6];

...将item变量设置为undefined。选择器'.itemAnchor'不返回任何元素,因此$('.itemAnchor')是一个空的jQuery对象,它在索引6没有元素。

在删除使用'.itemAnchor'语句的开始和结束评论之后,您需要使用上的.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="]'.find()之类的选择器,在这种情况下,您可以不需要.last().slice()

var href = $($('.hidden_elem')[0].innerHTML.replace('<!--','').replace('-->',''))
          .find('.itemAnchor[href*="h="]').attr('href');

演示:http://jsfiddle.net/rtnNd/6/

请注意,使用attribute-contains selector的最后一种方法是拾取href在任何地方都有文字“h =” 的元素,因此它适用于您的情况但也可以选择hh=somethingmath=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/