Javascript 如何在不指定速记else语句的情况下有条件地链接jQuery?

Javascript 如何在不指定速记else语句的情况下有条件地链接jQuery?,javascript,jquery,if-statement,filter,chaining,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&g

我有一个包含链接项或无链接项的列表,因此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>" );
//在listitems上的循环中
var项目=项目[i];
var containsLinks=item.children.length==1&&item.children[0]。标记名===A;
//这不管用。。。
var captioncontent=$(项).children()
.filter(包含链接?:空)
.非(“img”)
.wrap(“”);
//那也不是
var captioncontent=$(item).children()[containsLinks?children:null]()
.非(“img”)
.wrap(“”);
问题
在jQuery中,如何在速记if-else语句中“null”返回,或者如何在没有速记else语句的情况下进行条件链接

谢谢

这对我很有用:

var captionsContent = $( item )
  .find(containsLinks ? "a *" : "*")
  .not("img")
  .wrap( "<div class='foo'></div>");
var-captioncontent=$(项目)
.find(包含链接?*:*”)
.非(“img”)
.wrap(“”);

简而言之,除非有更好的答案,否则我会接受的。

为什么你不能通过一个糟糕的选择器?怎么办?(我想我现在学到了一些东西…:-)
$(item).children().has('a')。not('img')。wrap()
?@jAndy:不起作用。包装
[“a”]
[“h3”,“p”]
,当它应该包装
[“h3”,“p”]
[“h3”,“p”]
时。