jquery按类名获取元素

时间:2015-06-15 07:47:35

标签: html arrays parsing getelementsbyclassname

我使用Jquery获取一个包含类" x"的元素列表。

HTML:

<p class="x">Some content</p>
<p class="x">Some content#2</p>

如果我们使用Jquery获取这两个html元素并使用它做一些事情 - 我们使用类似的东西:

$(&#34; .x&#34;)。text(&#34;更改文字&#34;);

这将改变两个段落的文本。来自$(&#34; .x&#34;) - 我们如何添加数组 - 下标符号,就像我们可以使用getElementsByclassName一样,如下所示:

document.getElementsByClassName(&#34; X&#34;)[0] .innerHTML

我试过这个 $(&#34; .x&#34;)[0] .text(&#34; asasa&#34;) - 它没有工作在javascript控制台中给出了一个类型错误。我也尝试过在这里获取API - http://jsfiddle.net/probosckie/jnz825mp/ - 它不起作用

错误是Uncaught TypeError:$(...)。get(...)。text不是函数 下面的解决方案都没有工作!

3 个答案:

答案 0 :(得分:3)

您可以使用get()方法访问数组中的元素,例如:

$(".x").get(index).textContent = "changed text";

更多信息:https://api.jquery.com/jquery.get/

要获取HTML(innerHTML),请调用.html()函数:

// This is equal to document.getElementsByClassName("x")[0].innerHTML
$(".x").get(0).innerHTML;

如果您想设置HTML,那么只需在函数调用中提供您的HTML代码,例如.html('<h1>Hello, World!</h1>')

编辑.get()返回DOM对象而不是jQuery包装元素。因此.text().html()无效。除非你包装它。

更多选项:

$(".x").get(0).innerHTML;
$($(".x").get(0)).html();
$(".x:first").html();

答案 1 :(得分:1)

你可以这样做:

$('.x:eq(0)').text('changed text');

或:

$('.x').eq(1).text('bbb');

效果很好

对不起我之前的回答..

答案 2 :(得分:0)

解决方案$(".x").get(index)...将首先匹配所有 .x(这是糟糕的表现)。然后然后它将过滤

如果你有1000 .x,它将填充jQuery对象中的1000个项目(在过滤之前)

但是

$(".x:first").text("changed text");会做得更好,因为它不会产生所有.x然后过滤,但会在第一步完成(不填充1000个项目)