使用 jQuery .each() 在多个图像下方附加标题属性。
如何使用 .each() 获取 var、使用它、清除它,然后从 .each() 的下一个循环开始?
我有不同数量的带有“标题”属性的图像。我想获取 title 属性并将其附加到每个图像后面的新 div 中,创建标题。然而,在包含 2 个图像的页面上使用以下代码,我在每个图像下都得到了它们的两个标题。
我如何运行 .each() 以便它在第一个图像上工作,擦除它的 var,然后在第二个图像上工作?
jQuery(".node-type-article .imagefield-imagelink img").each( function() {
var caption = jQuery(this).attr('title');
jQuery(this).after('<div class="caption"></div>');
jQuery('.caption').append(caption);
caption = '';
});
How can I use .each() to get a var, use it, clear it and then start fresh with the next loop of .each()?
I've got a varying number of images with 'title' attribute. I want to take the title attribute and append it to a new div after each image, creating a caption. Using the following code on a page with 2 images, however, I get both of their titles under each image.
How can I run .each() so that it does it's work on the first image, erases it's var, then does it's work on the second image?
jQuery(".node-type-article .imagefield-imagelink img").each( function() {
var caption = jQuery(this).attr('title');
jQuery(this).after('<div class="caption"></div>');
jQuery('.caption').append(caption);
caption = '';
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是有问题的线。它匹配两个 div:
这样做:
另外,您不需要清除标题 var。它对于函数的每次调用都是本地的。
This is the offending line. It's matching both divs:
Do this:
Also, you don't need to clear the caption var. It's local to each invocation of the function.
每次迭代都会开始一个新的范围。您不需要
擦除
var title
,因为它会在迭代后自动超出范围。Every iteration will start a fresh scope. You don't need to
erase
thevar caption
as it'll automatically go out of scope after the iteration.您的问题在这里:
caption = '';
这将起作用:
Your problem is here:
caption = '';
This will work:
你的罪魁祸首是:
jQuery('.caption').append(caption);
这将找到所有具有标题类的对象,并将标题文本附加到其中。
您可能看到的是一个带有一个标题的标题,然后一个带有 2 的标题。
解决方法是添加
next
语句,因此您可以:
编辑
抱歉忘记了要添加,您不需要清除标题变量。
因为您已在
each
函数中定义了变量,所以每次都会创建一个新变量。Your culprit is:
jQuery('.caption').append(caption);
this will find all objects with the class of caption and append the caption text to it.
What you area probably seeing is one caption with one title and then one with 2.
The fix is to add a
next
statement, so instead of:you do:
EDIT
Sorry forgot to add, you dont need to clear you caption variable.
Because you have defined your variable within the
each
function, it will create a new variable each time.