小编Orn*_*ier的帖子

事件处理程序出错:"this.data()不是函数"

我有一个HTML列表,其中包含data-…每个属性的链接:

<ul id="list">
    <li><a data-info="link1"> **** </a></li>
    <li><a data-info="link2">****</a></li>
    <li><a data-info="link3">**** </a></li>
    <li><a data-info="link4">****</a> </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我需要在data-info点击时收到链接的值.所以我想到这样的事情:

var my_links = $('#list').find('a');

my_links.on('click', function(){
     console.log(this.data(info));
});
Run Code Online (Sandbox Code Playgroud)

但后来我得到:

未捕获的TypeError:this.data不是函数

如果我这样做:

var my_links = $('#list').find('a');

my_links.on('click', function(){
  console.log(this);
});
Run Code Online (Sandbox Code Playgroud)

我得到每个链接的完整HTML代码,例如:

<a data-info="link1"> **** </a>
Run Code Online (Sandbox Code Playgroud)

为什么两件事都在发生,我该如何解决?

javascript jquery

8
推荐指数
1
解决办法
2万
查看次数

通过未知DOM的递归函数

我正在学习js DOM,我想创建一个递归函数,我可以用它来遍历任何DOM中的所有节点.我做到了,但我无法弄清楚为什么我的第一次尝试不起作用:

HTML

function mostrarNodosV2(node) {
  console.log(node.nodeName);
  if (node.firstElementChild != null) {
    node = node.firstElementChild;
    mostrarNodosV2(node);
  }

  if (node.nextElementSibling != null) {
    node = node.nextElementSibling;
    mostrarNodosV2(node);
  }

}

mostrarNodosV2(document);
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Exercise IV</title>
</head>

<body>
  <h1> Just a header</h1>
  <p>Nice paragraph</p>
  <ul>
    <li>Im just an element list on an unordered list</li>
  </ul>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

流程如下:

  1. 文档节点.
  2. 我们用他的第一个孩子重复这个功能:头节点.
  3. 我们用他的第一个孩子重复这个功能:元节点.
  4. 因为'meta'没有孩子,我们用他的下一个兄弟节点重复这个功能:标题节点.
  5. 因为'title'没有子节点或下一个兄弟节点,我们结束node = title的函数,我们应该结束node …

javascript recursion dom

5
推荐指数
1
解决办法
340
查看次数

标签 统计

javascript ×2

dom ×1

jquery ×1

recursion ×1