2013-03-20 85 views
0

我在我的Concrete5模板中有一些代碼,如果用戶沒有上傳圖庫圖片,我不需要這些代碼。因此,我需要刪除下面的代碼,如果它不包含圖片:使用jQuery或PHP從頁面中刪除多餘的HTML代碼?

<ul class="Gal_2"> 
     <li class="Frst">  
     </li> 

     <li> 
     </li> 
</ul> 

它看起來像這樣,當它具有圖像:

<ul class="Gal_2"> 
    <li class="Frst"> 
     <p><a rel="group" href="/concrete/files/2113/6352/1788/Lighthouse.jpg"><img width="1024" height="768" alt="Lighthouse.jpg" src="/concrete/files/2113/6352/1788/Lighthouse.jpg"></a> 
     </p> 
    </li> 
    <li> 
     <p><a rel="group" href="/concrete/concrete/themes/greek_yogurt/Images/TEMP_IMG1.jpg"><img width="800" height="537" alt="Island Rab" src="/concrete/concrete/themes/greek_yogurt/Images/TEMP_IMG1.jpg" style="float: left;"></a> 
     </p> 
    </li> 
</ul> 

什麼會檢查並刪除標記的最快方法?

+2

你應該能生成HTML頁面的過程中,以檢查此對PHP服務器端。 – MatRt 2013-03-20 08:55:00

+0

不是真的......因爲它使用自定義塊來輸出HTML標記。而不是降低投票?也許一些幫助或建議在PHP會很好! – PriceCheaperton 2013-03-20 08:57:36

+1

在服務器端驗證 – 2013-03-20 08:58:33

回答

4

嘗試使用:not:has

Live Demo

$('.Gal_2:not(:has(a))').remove(); 
+0

+1如果將'#Gal_2'更改爲'.Gal_2',它就可以工作。 – insertusernamehere 2013-03-20 08:59:21

+0

謝謝@insertusernamehere,真是太好了。 – Adil 2013-03-20 09:01:00

1

你可以做這樣的:(!$( 'Gal_2 IMG')長度)

如果{('。Gal_2')。remove(); }

固定版本還有的情況下,一個.Gal_2與圖像等,沒有他們:

$('.Gal_2').each(function() { 
    if (! $(this).find('img').length) { 
     $(this).remove(); 
    } 
}); 
+1

如果存在多個.Gal_2列表,並且其中一個列表中包含圖像,則不會刪除圖庫元素。 – beerwin 2013-03-20 09:04:03

+0

感謝您發現這一點,我已經用固定版本更新了我的答案。 – Nelson 2013-03-20 11:09:06

+0

該解決方案將刪除其中包含圖像的解決方案。 OP想要相反。 – beerwin 2013-03-20 12:29:55

0

你可能會使用類似:

if (!$('img', 'ul.Gal_2 li')) { 
    $('ul.Gal_2 li').hide(); 
    // or 
    $('ul.Gal_2 li').remove(); 
} 
2

試着這麼做如下:

<?php if (count($images)):?> 
<ul class="Gal_2"> 
    <?php foreach($images as $index => $image):?> 
     <li <?php echo $index == 0 ? 'class="Frst"' : ''?>> 
      <p> 
       <a rel="group" href="<?php echo $image['path']?>"> 
        <img width="1024" height="768" src="<?php echo $image['path']?>"> 
       </a> 
      </p> 
     </li> 
    <?php endforeach?> 
</ul> 
<?php endif?> 

最好在服務器端過濾出來,因爲用戶不需要這些空元素 - 首先必須使用HTTP請求傳輸它們,然後必須使用JavaScript刪除它們。

+0

謝謝你抽出時間讓我看看這個......我認爲它是最好的學習方式,通過答案讓我可以想象它。知識應該分享..再次感謝你.. – PriceCheaperton 2013-03-20 09:00:41

0

另一個

if($(".Frst").children().length) ? **do smthng** : $(".Gal_2").remove();