如何将事件限制为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对象中。
因此,如果您不必首先返回的元素,但仍希望使用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/