假设我有以下标记:
<ul>
<li class="one"></li>
<li class="one"></li>
<li class="one"></li>
</ul>
我将下面的jquery添加到perfprm onclick函数:
$(".one").click(function(){
var text = this.innerHTML;
alert(text);
})
点击功能分配给所有三个li
元素。 usualy在javascript document.getElementsByClassName("one").myprop
中会返回第一个带有类名one
的属性myprop
的元素。同样,如果我向document.getElementsByClassName("one")
添加一个事件监听器,该事件将附加到具有类名one
的第一个元素。例如。
var one = document.getElementsByClassName("one");
one.addEventListener("click", function(){
alert();
});
会在单击第一个li
元素时显示警告poup。
类似地,jquery应该只将函数分配给类名为one
的第一个元素。
那么jquery如何为具有类名one
的所有元素分配函数?
答案 0 :(得分:2)
那么jquery如何为所有带有类的元素分配一个函数 一个名字?
原始选择器是传递给jQuery()
".one"
元素的集合
在上面列出的第一个表述中,
jQuery()
- 也可以是 写作$()
- 在DOM
中搜索任何元素 与提供的选择器匹配并创建一个新的jQuery对象 引用这些元素:$( "div.foo" );
强调添加在&#34; 任何&#34;。
.one()
来电.on()
function one(types, selector, data, fn) {
return this.on(types, selector, data, fn, 1);
}
调用.each()
将事件附加到原始选择器$(".one")
return this.each(function () {
jQuery.event.add(this, types, fn, data, selector);
});
答案 1 :(得分:0)
取自MDN,
Javascript&#39; getElementsByClassName&#39;返回一个类似于数组的对象 具有所有给定类名的所有子元素。
所以,你实际上不会得到一个结果。您的示例中几乎相同,$('.one')
只是做同样的事情。
要获取返回元素的第一个元素,可以使用;
var $jQueryObject = $('.one').eq(0);
//
var domElem = $('.one').get(0);
因此,如果您只想将事件处理程序分配给第一个,您可以这样做;
$(".one").eq(0).click(function(){
var text = this.innerHTML;
alert(text);
})
答案 2 :(得分:0)
在jQuery中,您可以使用:nth-child(0)
或:eq(1)
指向第一堂课。在内部,它将所有元素作为列表获取,然后当您提供(0)
时,它意味着index=0
。如果:nth-child()
索引从0开始,而:eq()
索引从1开始。
JavaScript getElementsByClassName
做同样的事情。
示例:
$("button").click(function() {
//alert($(".one:nth-child(1)").text());
alert($(".one:eq(0)").text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul>
<li class="one">A</li>
<li class="one">B</li>
<li class="one">C</li>
</ul>
<button>Click</button>
答案 3 :(得分:0)
getElementsByClassName()方法返回文档中具有指定类名的所有元素的集合,作为NodeList对象。
NodeList对象表示节点的集合。可以通过索引号访问节点。指数从0.te开始
get(0)
将解决您的问题。
get()方法获取选择器指定的DOM元素。
有关详细信息,请参阅question。
另见doc
$('.one').get(0).click(function()
{
var text = this.innerHTML;
alert(text);
})
答案 4 :(得分:0)
根据您的要求&#34; jquery应该只将函数分配给类名为1的第一个元素&#34;这里的代码可以提供一些帮助。
<script>
$(function(){
$("li.one:first-child").on("click",function(){
/*Your actions go here*/
var text =$(this).html();
alert(text);
});
});