0

リンクされたアイテムまたはリンクされていないアイテムを含むリストがあるため、HTML は次のようになります。

<ul>
 <li>
   <a href="#">
     <img />
     <h3>Hello</h3>
     <p>World</p>
   </a>
 </li>
 <li>
   <img />
   <h3>Foo</h3>
   <p>Bar</p>
 </li>
</ul>

画像ではないリスト アイテム (またはリスト アイテム リンク) 内のすべてをラップしようとしています。

これが私がやっていることです:

// inside a loop over the listitems
var item = items[i];
var containsLinks = item.children.length === 1 && item.children[0].tagName === "A";

// this does not work...
var captionsContent = $( item ).children()
    .filter(containsLinks ? "a" : null)
    .not("img")
    .wrap( "<div class='ui-captions-content'></div>" );

// neither does that
var captionsContent = $( item ).children()[containsLinks ? children : null]()
    .not("img")
    .wrap( "<div class='ui-captions-content'></div>" );

質問:
jQuery の省略形の if-else ステートメントで戻り値を "null" にする方法、または省略形の else ステートメントを使用せずに条件付きチェーンを実行するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

これは私のために働いた:

var captionsContent = $( item )
  .find(containsLinks ? "a *" : "*")
  .not("img")
  .wrap( "<div class='foo'></div>");

短く、より良い答えがなければ、私はそれを受け入れます。

于 2013-06-25T13:07:13.077 に答える