javascript - 仅选择 jQuery 集合中的一个元素

标签 javascript jquery

如何将事件限制为 jQuery 集合中的单个元素?

在下面的例子中,我尝试使用 .one()将行为(插入 HTML 的 <li class='close'>Close</li> 行)限制为单个实例。该行为确实只发生一次,但在 $( "ul>li>a" ) 的每个匹配元素上.我如何让它只发生一次,只发生在集合中的一个匹配元素上?

有什么想法吗?

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

提前致谢。

-作为

最佳答案

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

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

$("selection").first() 返回所选内容的第一个 元素,并将其包装 在一个 jQuery 对象中。

因此,如果您不需要返回 first 元素,但仍需要 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,与原生 JavaScript 数组功能相比,使用 CSS 选择字符串来过滤结果的成本相当高。

关于javascript - 仅选择 jQuery 集合中的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147437/

相关文章:

javascript - 使用媒体查询的投影仪响应

javascript - 是否可以使用 “HERE Maps API for JavaScript” 以可接受的性能渲染邮政编码边框?

javascript - 在 highchart 中格式化后,工具提示不会隐藏

jquery - BackboneJS 单页站点 : Attaching and Cleaning Up Views

javascript - 使用 registerstartupscript 时出现意外标识符

javascript - 用键值存储数组

javascript - 当我只想改变一个元素时,如何阻止 jQuery 影响所有元素

javascript - 三 (3) 个等号

javascript - 事件传播问题

javascript - 使用延迟链接循环与多个 ajax 调用