if语句中的两个条件(jQuery)

时间:2012-06-01 19:09:03

标签: javascript jquery

我正在尝试添加一个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'));
            }
    });
});

有人可以帮忙吗?

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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'));
  }
});

答案 2 :(得分: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'));
        }
});