Javascript 如何在jQuery中选择单个元素?
我有一个表结构,看起来像:Javascript 如何在jQuery中选择单个元素?,javascript,jquery,Javascript,Jquery,我有一个表结构,看起来像: <table> <tr id="row1"> <td> <div>row 1 content1</div> </td> <td> <div>row 1 content2</div> </td> <td> <div>row 1 content3</div>
<table>
<tr id="row1">
<td>
<div>row 1 content1</div>
</td>
<td>
<div>row 1 content2</div>
</td>
<td>
<div>row 1 content3</div>
</td>
</tr>
<tr id="row2">
<td>
<div>row 2 content1</div>
</td>
<td>
<div>row 2 content2</div>
</td>
<td>
<div>row 2 content3</div>
</td>
</tr>
<tr id="row3">
<td>
<div>row 3 content1</div>
</td>
<td>
<div>row 3 content2</div>
</td>
<td>
<div>row 3 content3</div>
</td>
</tr>
</table>
我得到的是一个包含单个元素的数组(我要查找的DIV),然后我必须使用d[0]进行访问。为什么jQuery返回一个元素数组,我认为使用上面的选择器会直接返回DIV元素
-嗯……好了,我脑子里刚打开一盏灯,我现在明白了。干杯。jQuery总是返回一组元素。有时,集合是空的。有时,它只包含一个元素。这样做的好处在于,无论匹配多少个元素,您都可以编写以相同方式工作的代码:
$("selector").each(function()
{
this.style.backgroundColor = "red";
});
有趣 如果您发现您知道只处理一个元素,并且只返回一个元素,那么您可以始终选择数组的零索引
$("selector")[0].value
它脏兮兮的,通常打破了jQuery的惯例。。。但是您“可以”做到这一点。如果您更喜欢保留jQuery对象,您可以编写:
$("selector").first().val()
$(“选择器”)。等式(5)
这将返回一个只包含第5项的第一类jquery数组。
i、 例如,我可以对返回值执行jquery函数
在这里找到了答案:
要直接获取div,请尝试以下操作
$divElement=$('row3 td div')代码>执行此操作有几个选项:
“选择下面代码段中几个Div元素中的第一个,并将其颜色更改为粉红色”
div1
第2组
第3组
第4部分
在这里,我们可以通过以下方式选择第一个Div:
1) $(“div”).first().css(“颜色”、“粉色”)代码>
2) $(“div:first”).css(“颜色”、“粉色”)代码>
3) $(“div:type的第一个”).css(“颜色”、“粉色”)代码>
请注意,2是一个jQuery构造,而不是本机css构造,因此性能可能稍差。这在jQuery 3.4.1中起作用:
$($('li')[0]).css('color','blue')代码>这将返回一个包含单个元素的数组。您不能在其上触发单击事件。上面的CodeNinja解决方案返回不在数组中的单个元素。jQuery始终适用于类似数组的对象。任何后续操作都将引用所有元素。因此,所有这些表达式都将产生相同的结果:$(“选择器:第一”)。单击()
,$(“选择器”)。第一()。单击()
,$($(“选择器”)[0])。单击()
。请参阅Shog9的答案。我得到的是“TypeError:$(…)[0]。html不是函数”,而.first()工作正常。仅选择数组的[0]索引将返回DOM元素,而不是jQuery对象,因此您将无法在其上使用.html()之类的jQuery方法。没关系,这并没有回答发布的问题,但我一直在寻找它。直到我再次阅读问题后才意识到。但是如果您在上面的HTML上执行此操作,例如,$('row3 td div')。css('background-color','red')
将应用于所有这3个
中!(至少在jQuery 2.1中)这怎么可能是选定的答案?问题是“我如何选择单个元素?”而你的答案是“你得到了所有元素!”
$("selector").first().val()