1. 程式人生 > >被坑了,js語法跟Java面向物件語法還是有區別的

被坑了,js語法跟Java面向物件語法還是有區別的

請見程式碼,實現功能是要點表格當前行裡的刪除連結,直接刪除當前行,並且刪到最後一行的時候,把包含當前table的div直接隱藏了。

function delCurrentTr(){
	//這兩句一定要寫在$(this)物件刪除之前,否則$(this)物件執行刪除後就取不到了。
	var parentDiv = $(this).parents('.tbl-except');
	var trCount = $(this).parent("td").parent("tr").siblings().size()+1;
	
	//執行刪除當前行操作
	$(this).parent("td").parent("tr").remove();
	
	//如果trCount放在這裡才取值,是取不到了的,因為$(this)已經不存了。
	//var trCount = $(this).parent("td").parent("tr").siblings().size()+1;
	trCount --;

	if(trCount==0){
		//同理,在這裡parentDiv再取值的話,也是取不到的
		//var parentDiv = $(this).parents('.tbl-except');
		parentDiv.hide();
	}
}

註釋掉的程式碼是面向物件的思維寫的,昨天被坑了一個下午。

得到的理解就是在JS裡刪了就沒了,沒有什麼物件引用之類的東西還留下(好像JAVA也是這樣吧,物件沒了,再通過物件的引用也是找不到與該物件相關的東西了)。