2

我正在尝试添加一个 if 语句来检查图像是否大于 199px 以及它是否没有 <a> 父元素。 这有效:

    $('div.post_body').each(function() {
    $(this).find('img').each(function () {
        var img = $(this);
            if (img.is('a') !== true) {
                img.wrap($('<a/>').attr('href', img.attr('src')).addClass('lightview limg'));
            }
    });
});

这有效

    $('div.post_body').each(function() {
    $(this).find('img').each(function () {
        var img = $(this);
            if (img.width() > 199) {
                img.wrap($('<a/>').attr('href', img.attr('src')).addClass('lightview limg'));
            }
    });
});

这不起作用:

    $('div.post_body').each(function() {
    $(this).find('img').each(function () {
        var img = $(this);
            if ((img.width() > 199) && (img.is('a') !== true)) {
                img.wrap($('<a/>').attr('href', img.attr('src')).addClass('lightview limg'));
            }
    });
});

有人可以帮忙吗?

4

3 回答 3

3

因此,您希望所有div超出特定尺寸的图像都直接位于其中?

$("div.post_body > img").wrap(function(){
    if ( $(this).width() > 199 ) {
        return $("<a>").attr("href", this.src).addClass("lightview limg");
    }
});​

演示:http: //jsfiddle.net/BQAZH/1/

于 2012-06-01T19:28:37.840 回答
1

通过查看代码中存在的逻辑,您似乎正在尝试测试是否img被包裹<a></a>,如果不是,则包裹它。

如果是这样,您可以优化您的代码:

$('div.post_body img').each(function() {
  var $img = $(this);

  if (($img.width() > 199) && ($img.parent('a').length)) {
    $img
      .wrap($('<a/>').attr('href', $img.attr('src')).addClass('lightview limg'));
  }
});
于 2012-06-01T19:28:52.517 回答
1

您可以检查其父元素是否为锚元素:

$('div.post_body img').each(function() {
    var img = $(this);
        if ((img.width() > 199) && (img.parent().get(0).tagName != 'a')) {
            img.wrap($('<a/>').attr('href', img.attr('src')).addClass('lightview limg'));
        }
});
于 2012-06-01T19:30:51.613 回答