Javascript 为什么我会得到一个未定义的';儿童';呼叫
单击导航中的一个按钮后,我试图将一个类附加到divJavascript 为什么我会得到一个未定义的';儿童';呼叫,javascript,jquery,Javascript,Jquery,单击导航中的一个按钮后,我试图将一个类附加到div $navButtons.on('click', navigationClick); // liseten to the navigation and add a class to the link that was selected var $navButtons = $('nav a'); var $currentListItem = $('nav li') function navigationClick(){ console.l
$navButtons.on('click', navigationClick);
// liseten to the navigation and add a class to the link that was selected
var $navButtons = $('nav a');
var $currentListItem = $('nav li')
function navigationClick(){
console.log("click");
// if there is a class to remove, remove it
// currentListItem.children('div').removeClass("nav-selected");
var index = $navButtons.index(this);
console.log(index);
$currentListItem = $currentListItem[index];
console.log($currentListItem); = <li>
$currentListItem.children('div').addClass("nav-selected");
}
$navButtons.on('click',navigationClick);
//liseten打开导航并将类添加到所选链接
var$navButtons=$('navA');
变量$currentListItem=$('nav li')
函数导航单击(){
控制台日志(“单击”);
//如果有要删除的类,请将其删除
//currentListItem.children('div').removeClass(“选择导航”);
var index=$navButtons.index(此);
控制台日志(索引);
$currentListItem=$currentListItem[索引];
console.log($currentListItem);=
$currentListItem.children('div').addClass(“选择导航”);
}
当我尝试执行此代码时,会出现以下错误:
无法读取属性。未定义的子级
我不确定为什么它说的
$currentListItem
是未定义的,因为我检查了它上面的控制台日志,我发现它是li
项。问题是由于这一行:
$currentListItem = $currentListItem[index];
这里您通过索引访问jQuery对象,它返回一个元素对象,而不是jQuery对象。反过来,元素没有children()
方法,因此您会看到错误
要解决此问题,请调用eq()
,以按索引获取jQuery集合中的元素:
$navButtons.on('click', navigationClick);
var $navButtons = $('nav a');
var $currentListItem = $('nav li')
function navigationClick() {
var index = $navButtons.index(this);
$currentListItem = $currentListItem.eq(index); // note .eq() here
$currentListItem.children('div').addClass("nav-selected");
}