2012-05-18 47 views
1

我需要使用1.3.2库,但不幸的是它不支持最后一个功能。这使我的函数失败:替代jQuery的.last

$op.last().next().after($op); 

“$ op.last是不是一个函数”

演示:

http://jsfiddle.net/uscyH/

我一直在失败在纯js中重写这个功能,有什么建议?请注意,我还需要.first(),但我假设我可以从.last替代代码中推断出。许多thanks-

+2

然后使用较新的jQuery – Joseph

回答

11

可以使用:last选择,因为其中1.0存在:

$op.filter(':last') 
1

假设$op是选择集合中,以获得集合中的第一个DOM元素:

var first = $op[0]; 

和上次使用:

var last = $op[$op.length-1]; 
1

它看起来就像你可以用这种方法 http://jsfiddle.net/uscyH/3/

alert("Last is: "+$("option:last").html()+" and first is: "+$("option:first").html());​ 

更新找到的最后一个或第一个项目:看起来你有很多想法,从现在的选择。随意使用任何你想要的方法。这种方法可能不是最快的方法,因为它正在执行两个DOM查询,而不是在已经存储在数组中的列表上进行操作。很高兴看到jQuery如何在这些版本中变得如此强大。感谢大家的想法!

+0

的OP已经有'$ op'集合中的元素,他想检索该集合的第一个/最后一个元素。你正在做的DOM查询是不同的。 –

+0

@ŠimeVidas;感谢您的想法。你说得对,他没有要求一个DOM查询。不过,我认为,他可能不需要创建一个变量来保存集合,这取决于他正在尝试做什么。如果他更喜欢DOM查询,他可能会决定坚持使用'$ op'或放弃它。 – veeTrain

+0

DOM查询很贵。我总是尽量减少他们的使用。使用'$ op'集合是首选。 –

0
$($op[$op.length-1]).next().after($op); 

你也可以选择扩展jQuery并创建你自己的最后一个方法。

5

要获得最后一个元素,这样做:

$op.slice(-1) 

现场演示:http://jsfiddle.net/uscyH/4/

jQuery的.slice()方法是JavaScript .slice图案后() 为阵列的方法。它模拟的一个特点是 负数的能力可以通过startend 参数传递。如果提供了负数,则表示从该组的结尾开始而不是开始的位置 。

来源:http://api.jquery.com/slice/


要获得的第一个元素做到这一点:

$op.eq(0) 

现场演示:http://jsfiddle.net/uscyH/5/

+0

如何访问第一个元素? – veeTrain

+0

@veeTrain'$ op.eq(0)' –

+0

不错!有趣的方法+1 – veeTrain