被坑了,js語法跟Java面向物件語法還是有區別的
阿新 • • 發佈:2019-01-10
請見程式碼,實現功能是要點表格當前行裡的刪除連結,直接刪除當前行,並且刪到最後一行的時候,把包含當前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也是這樣吧,物件沒了,再通過物件的引用也是找不到與該物件相關的東西了)。