如何在没有指定简写else语句的情况下有条件地链接jQuery?

时间:2013-06-25 12:43:40

标签: javascript jquery if-statement filter chaining

我有一个包含链接或无链接项的列表,因此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语句“返回”返回值,或者如何在没有简写else语句的情况下进行条件链接?

谢谢!

1 个答案:

答案 0 :(得分:1)

这对我有用:

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

简短而且除了更好的答案,我会忍受它。