jquery .each() loop

jquery .each() loop

本文关键字:loop each jquery      更新时间:2023-09-26

我想阅读所有链接在"。vm-video-title"-div并将它们分别放在同一个div中。所以我制作了这个脚本:

$('.vm-video-title').each(function(i) {//all divs
    $(this).html($(this).html()+$("div.vm-video-title>a").text());//add to div the link
    });

但是我有一个问题,它读取所有div的所有链接,并把它们放在一个div。

的例子:

<div class="vm-video-title"><a href="...">Text1</a></div>
<div class="vm-video-title"><a href="...">Text2</a></div>
<div class="vm-video-title"><a href="...">Text3</a></div>
输出:

<a href="...">Text1</a>Text1Text2Text3
<a href="...">Text2</a>Text1Text2Text3
<a href="...">Text3</a>Text1Text2Text3

想要输出:

<a href="...">Text1</a>Text1
<a href="...">Text2</a>Text2
<a href="...">Text3</a>Text3

可以直接选择<a>元素,使用after() [docs]方法分别在每个元素后面附加每个元素的内容。

$("div.vm-video-title > a").after(function() { return $(this).text(); });

这不会像html() [docs]方法那样对现有元素执行"destroy then recrere "操作。

工作的例子:

http://jsfiddle.net/CCr9C/

这个应该可以帮你完成任务,

你需要在循环(el)中找到当前元素中的div。

$('.vm-video-title').each(function(i, el) {
    el = $(el);
    el.html(el.html()+el.find("a").text());
});

在你的代码中,你正在添加文本()所有匹配的"a"标签在你的div(即Text1Text2Text3)

你差一点就成功了。而不是:$("div.vm-video-title").text(),它在任何div中提供vm-video-title类的文本,您需要在当前div中找到a标签并从中获取文本。为了在当前div jQuery( selector, [context] ) 中选择a,我们将this传递为context

$('.vm-video-title').each(function(i) {//all divs
   $(this).html($(this).html()+$("a", this).text());
});