iT邦幫忙

0

JQuery 刪除 全部無內容的DIV

  • 分享至 

  • xImage

請問

我目前要作一個數狀結構的選單
在第二層是用

<div class='second'>

包住 可是有一些沒有第二層 所以會造成 多出一個空的div
要如何把這個DIV刪除?

php

$arrTitle = array('0'=>'new[]','1'=>'self[]','2'=>'leave_sys[]','3'=>'overtime[]','3.1'=>'go_out[]','4'=>'basic[]','5'=>'erp[]','6'=>'per_sal[]');
	foreach ($muAr as $key => $value){
		echo '<label><input type="checkbox" class="title" name="title[]" onclick="checkAll(this,'."'".$arrTitle[$value['id']]."'".')" value="'.$value['id'].'">'.$value['title'].'</label><br>';
		echo '<div class="second">';
		foreach ($value as $k => $v) {
			if(!is_array($v)) continue;
			echo '  <label><input type="checkbox" name="'.$arrTitle[$value['id']].'" value="'.$v['id'].'">'.$v['title'].'</label><br>';
			echo '<div class="third">';
			foreach ($v as $k2 => $v2) {
				if(!is_array($v2)) continue;
				echo '    <label><input type="checkbox" name="'.$arrTitle[$value['id']].'" value="'.$v['id'].'">'.$v['title'].'</label><br>';
			}
			echo '</div>';
		}
		echo '</div>';
	}

JS

$(document).ready(function(){
		$(".second").prev().prev($("label")).before('<img class="expand" src="/media/image/portlet-expand-icon.png">');
		$(".second").css('display','none');
		$(".expand").on('click',function(){
			var div = $(this).next().next().next('.second');
			if(div.is(':visible')){
				div.css('display','none');
				$(this).attr('src','/media/image/portlet-expand-icon.png');
			}else{
				div.css('display','block');
				$(this).attr('src','/media/image/portlet-collapse-icon.png');
			}
		});
	});
	function checkAll(obj,cName) {
		 var box = $('input[name="'+cName+'"]');
		for(var i=0; i<box.length; i++){
			box[i].checked = obj.checked;
		}
	}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1

沒有第二層就直接判斷不要放第二層,php裡面不要混用html字串…

柯柯 iT邦新手 2 級 ‧ 2018-10-04 12:23:55 檢舉

抱歉 因為趕時間
所以先放PHP內還沒整理
JS有辦法把 無內容的DIV刪除嗎 還是沒辦法
PHP是判斷得出來
只是我怕如果PHP內的menu key值變動 判斷不出來他有沒有下一層
key值應該是不會變 只是怕有例外@@
還是會多出來 所以想找看看JS有沒有辦法判斷並刪除

jquery的語法如下處理
$('div:empty').remove()
這樣子會將無內容的div全數移除。

不過一般來說,還是因該要在輸出時就做判斷不讓他輸出才對。
且最好養成習慣不要用echo或print來輸出html。
就算是單純測試也最好不要,會不小心養成習慣。

沒說清楚你的判斷條件是什麼,無法知道會不會有變動的問題~

我要發表回答

立即登入回答