javascript – 仅在jQuery集合中选择一个元素

前端之家收集整理的这篇文章主要介绍了javascript – 仅在jQuery集合中选择一个元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将事件限制为jQuery集合中的单个元素?

在下面的情况下,我尝试使用.one()将行为(将< li class ='close'>关闭< / li>行)插入到单个实例.该行为的确只发生一次,但是每个匹配的元素$(“ul> li> a”).如何让它只发生一次,只有一个集合中匹配的元素?

有任何想法吗?

$( "ul>li>a" ).one(
 "click",function(){
  $( "ul ul")
  .prepend("<li class='close'>Close</li>")
 }
 );

提前致谢.

-如

解决方法

jQuery选择返回一个数组.因此$(“选择”)[0]可以工作.然而,有更好的抽象方法,如.get(0)或.first()(如果你正在寻找选择/数组的第一个元素).

$(“selection”).get(index)返回选择的纯DOM元素(在该特定索引处),并且不包含在jQuery对象中.

$(“selection”).first()返回选择的第一个元素,并将其包装在一个jQuery对象中.

所以如果你不需要返回第一个元素,但仍然需要jQuery的功能,你可以做$($(“selection”).get(index)).

鉴于你的情况,这应该是正常的:

// bind the 'onclick' event only on the first element of the selection
$( "ul>li>a" ).first().click(function() {
    $( "ul ul").prepend("<li class='close'>Close</li>");
});

这相当于这个:

$($( "ul>li>a" ).get(0)).click(function() {
    $( "ul ul").prepend("<li class='close'>Close</li>");
});

和这个:

$($( "ul>li>a" )[0]).click(function() {
    $( "ul ul").prepend("<li class='close'>Close</li>");
});

我必须不同意Ryan,与CSS本身的JavaScript数组功能相比,CSS选择字符串的过滤结果相当昂贵.

原文链接:https://www.f2er.com/jquery/151257.html

猜你在找的jQuery相关文章