Javascript 为什么我会得到一个未定义的';儿童';呼叫

Javascript 为什么我会得到一个未定义的';儿童';呼叫,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

单击导航中的一个按钮后,我试图将一个类附加到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.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");
    }