我使用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不是函数 下面的解决方案都没有工作!
答案 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个项目)