2013-06-25 1 views
0

У меня есть список с не связанными или нет подключаемых элементов, поэтому HTML выглядит следующим образом:Как условно цепочка в jQuery без указания сокращенного выражения else?

<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 или как делать условную цепочки без сокращенного else-утверждения?

Спасибо!

+0

Почему вы не можете просто пройти плохой селектор? – Nix

+0

Как это сделать? (Я думаю, что сейчас что-то изучаю ... :-) – frequent

+1

'$ (item) .children(). Has ('a'). Not ('img'). Wrap()'? – jAndy

ответ

1

Это работает для меня:

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

Короткий и запрещая лучший ответ, я буду жить с ним.