2012-07-03 74 views
0

我的HTML結構如下jQuery的讓孩子是否有其他孩子的div不存在

<div class="container"> 
    <div class="image"><img /></div> 
    <div class="title_body"> 
     <div class="title">Title</div> 
     <div class="body">Body text</div> 
    </div> 
</div> 

的圖像左,標題+身體圖像的右div的更大。

我想要做的就是如果圖像不存在,使title_body div 100%寬度。 有很多.container的,而我只想讓度100%,在容器與圖像配失蹤

回答

2

如果(如您的標題所示)jQuery是一種替代方案,您可以簡單地執行$('div.container:has(div.image)').addClass('has-img'),然後使用div.container.has-imgdiv.container不同。

+0

這不是一個選項,因爲.container總是具有相同的樣式。這是我想改變風格的.title_body。 – Daniel

+0

是的,這就是CSS中的「級聯」:'div.container.has-img div.title_body {style here}'。 – powerbuoy

+0

哈哈,從來沒有想過這個xD我會試試:) – Daniel

0
$('.container:has(.title_body)').not(function() { 
    return $(this).has('.image').length; 
}).css('width', '100%'); 

,而不是通過jQuery的手動設置寬度,您可以改爲加個班,這是否。

+0

這將使_all_'.title_body'分子如果'.container'元素中有'.image'元素,'.container'元素內部100%寬度。 – powerbuoy

+0

不,這沒有工作:S – Daniel

+0

這刪除了.title_body包裝所有.title和.body – Daniel

0

如果是真的這就是你想要什麼,你可以檢查長度,看看是否IMG存在,如果u有一個以上的,儘量使用each()

if(!($(element).length)){ // if the element not exist 
    // do something 
} 

這裏是一個live demo


編輯:

這裏使用each(),如果您有更多然後一個一個例子:

$(".image").each(function(){ 
    if(!($(this).children().length)){ // if img not exits 
     $(this).next().width("100%"); 
    } 
}); 

Live demo


編輯:檢查股利image

Live Demo 2

+0

這也沒有工作:/如果.image div不存在,我想要.title_body div蜜蜂100%,而不是如果.image div是空的。 – Daniel

+0

@Daniel Lundahl檢查現場演示2. –

0
$('.container').each(function(){ 
    if ($(this).has('.image').length == 0) { 
     $(this).children('.title_body:first').css('width', '100%'); 
    } 
});​ 

檢查例如在jsFiddle

+0

嗯,它像你說的那樣工作,但如果.image不存在,我希望它是100%。但是,如果我改變。不是,它不起作用:S – Daniel

+0

我更新了示例。 –