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

Two conditionals inside an if statement (jQuery)

本文关键字:条件 两个 语句 jQuery if      更新时间:2023-09-26

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

    $('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'));
            }
    });
});

有人可以帮忙吗?

所以你想让所有图像直接在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/

通过查看代码中存在的逻辑,您似乎在尝试测试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'));
  }
});

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

$('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'));
        }
});