jQuery .each() 超过 .wp-caption

发布于 2024-11-24 15:25:43 字数 1262 浏览 1 评论 0原文

当标题存在时,WordPress 会向 .wp-caption 容器添加额外的 10px。我正在尝试使用 jQuery 删除多余的 10px。感谢 这个问题,但我意识到b/c有时一篇文章中有多个图像,我需要使用一些达到 .each() 效果的东西来迭代。下面的代码适用于第一个图像,但随后错误地将第一个图像的 with 应用于第二个图像的容器。如何纠正 .each() 使其正常工作?

jQuery().ready(function() {
    jQuery(".wp-caption").each(function(n) {
    var width = jQuery(".wp-caption img").width();
    jQuery(".wp-caption").width(width);
    });
    });

示例 w/ javascript on

示例 w/ < a href="http://dev.airve.com/blogx/2011/07/test-wp-caption-no-js/" rel="nofollow noreferrer">javascript 关闭

更新:下面最简化的解决方案:

jQuery().ready(function( $ ) {
    $(".wp-caption").width(function() {
        return $('img', this).width();  
    });
});

或者用 jQuery 替换 $ 以防止冲突:

jQuery().ready(function( jQuery ) {
    jQuery(".wp-caption").width(function() {
        return jQuery('img', this).width(); 
    });
});

两者都有效! =)

WordPress add an extra 10px to the .wp-caption container when a caption in present. I'm trying to use jQuery to remove the extra 10px. I've been able to do this thanks to the answers in this question, but I realized that b/c there are sometimes multiple images in a post, I need to use something to the effect of .each() to iterate. The code below works for the first image but then wrongly applies the first image's with to the container of the second image. How can I correct the .each() to work properly?

jQuery().ready(function() {
    jQuery(".wp-caption").each(function(n) {
    var width = jQuery(".wp-caption img").width();
    jQuery(".wp-caption").width(width);
    });
    });

Example w/ javascript on

Example w/ javascript off

Update: The most streamlined solution from below:

jQuery().ready(function( $ ) {
    $(".wp-caption").width(function() {
        return $('img', this).width();  
    });
});

Or substituting $ with jQuery to prevent conflicts:

jQuery().ready(function( jQuery ) {
    jQuery(".wp-caption").width(function() {
        return jQuery('img', this).width(); 
    });
});

Both work! =)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好倦 2024-12-01 15:25:43

this 是对 .each() 中当前元素的引用。

jQuery().ready(function( $ ) {
    $(".wp-caption").each(function(n) {
        var width = $(this).find("img").width();
        $(this).width(width);
    });
});

...所以从 this 开始,您使用 find()[docs] 方法获取后代 及其 width()

您还可以直接将函数传递给 width(),它会为您进行迭代。

jQuery().ready(function( $ ) {
    $(".wp-caption").width(function(i,val) {
        return $(this).find("img").width();
    });
});

...这里,函数的返回值将是设置为当前 .wp-caption 的宽度。


编辑:更新为在 .ready() 处理程序中使用通用 $ 引用。

this is a reference to the current element in the .each().

jQuery().ready(function( $ ) {
    $(".wp-caption").each(function(n) {
        var width = $(this).find("img").width();
        $(this).width(width);
    });
});

...so from this, you use the find()[docs] method to get the descendant <img>, and its width().

You could also pass a function directly to width(), and it will iterate for you.

jQuery().ready(function( $ ) {
    $(".wp-caption").width(function(i,val) {
        return $(this).find("img").width();
    });
});

...here, the return value of the function will be the width set to the current .wp-caption.


EDIT: Updated to use the common $ reference inside the .ready() handler.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文