0

これが私のhtmlです:

<div>
  <li>
    <a href="#">link</a>
  </li>
  <li>
    <a href="#">link 2</a>
  </li>
  <li>
    <a href="#">link 3</a>
  </li>
</div>

このjQueryコードは正常に動作しています:

$("div li").each(function() { 
    $('a', this).wrapInner("<span></span>");
});

ただし、これによりコードが壊れ、何も起こりません。

$("div li").each(function() {   
    $('a', this).wrapInner("<span></span>");        
        if $('span', this).height() > 10 {
            $(this).addClass('newClass');
        }

    });

私がする必要があるのは、スパンがリンクに挿入された後、スパンの高さを測定する必要があり、10px を超える場合は、それに含まれる li に newClass のクラスを適用することです。

4

6 に答える 6

0

if 条件にブレーク ()がありません

$("div li").each(function() {   
    $('a', this).wrapInner("<span></span>");        
        if ($('span').height() > 10) {
            $(this).addClass('newClass');
        }

});

また、* li *s の前後に ul タグがありません

<div>
  <ul>
    <li> <a href="#">link</a> </li>
    <li> <a href="#">link 2</a> </li>
    <li> <a href="#">link 3</a> </li>
  </ul>
</div>

未検証。

于 2013-02-19T13:24:38.703 に答える
0

このようにしてみてください

$("div li").each(function() {   
$('a', this).wrapInner("<span></span>");        
    if ($('a span', this).height() > 10) {
        $(this).addClass('newClass');
    }

});
于 2013-02-19T13:16:00.280 に答える
0

このコードにはスパンがありません:

$("div li").each(function() {   
    $('a', this).wrapInner("<span></span>");        
        if $('span', this).height() > 10 {
            $(this).addClass('newClass');
        }
});

そのため、最初にスパンを適用する必要があります。「this」から選択して見つけます。

$("div li").each(function() {   
    $('a', this).wrapInner("<span></span>");        
    if ($(this).find('a span').height() > 10) {
        $(this).addClass('newClass');//adds the class to the li by the way.
    }
});
于 2013-02-19T13:18:17.010 に答える
0

次のように、if 条件を中括弧で囲みます。

$("div li").each(function() {   
$('a', this).wrapInner("<span></span>");        
    if ($('span', this).height() > 10) {
        $(this).addClass('newClass');
    }
});

http://jsfiddle.net/7Ux2z/

于 2013-02-19T13:18:24.107 に答える
0
if ($('span', this).height() > 10) {
        $(this).addClass('newClass');
    }

if ステートメントの条件を括弧で囲む必要があります。

于 2013-02-19T13:18:27.523 に答える
0

ifステートメントの条件を括弧で囲む必要があります。

if ($('span', this).height() > 10) {
    $(this).addClass('newClass');
}

まだ行っていない場合 (そして、まだ行っていないように思えます) は、ブラウザーの開発者ツールがどのように機能するかを学ぶことをお勧めします。Firefox を使用している場合は、Firebug をインストールしてください。そうすれば、この種の基本的な JavaScript デバッグを自分で行うことができます。 .

于 2013-02-19T13:18:42.767 に答える