2

画像が199pxより広いかどうか、および<a>親要素がないかどうかをチェックするifステートメントを追加しようとしています。 これは機能します:

    $('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 に答える