不知道你的问题是什么?是解释这个代码还是这个代码有问题啊。
$(".TestDlBox >li >dl>dt")这个代码是指取出class为.TestDlBox的元素下li下的dl下的所有dt。
.hover是指鼠标划过的时候,和css里a的hover一样。
var kid=$(this).parent().parent().parent().attr("id");
就是去当前元素的父元素的父元素的父元素的id。就是取到kbox1.
$("#"+kid+" li>dl >dt").addClass("undis");是给所有kbox1.下的在li下dl下的dt添加样式。
if($(this).next("dd").hasClass("undis")){//如果当前dt的下一个元素dd的样式是undis
$(this).next("dd").removeClass("undis");//那么移除这个dd的样式undis。
}
整体思路就是当鼠标移动到dt上的时候,隐藏所有的dd,再把当前这个dt所对应的dd给显示出来。
语文能学这么差,中文表达能力能这么弱,估计你是外国人吧?!……
因为你点的是 dt ,而 dt.next("dd") 就是紧跟着这个 dt 的 dd 呗 ,这也正是操作的目标对象啊,这里没错!
当然,这个算法比较笨拙一些,还可以写点更直观更易懂更高效的算法出来。