jQuery为什么$(this)在回调函数“窗口”中?

时间:2019-12-25 16:59:51

标签: javascript jquery dom window this

我正要为我的待办事项清单代码创建一个删除按钮。 这是我在<script>

中的代码
  var del = $("<ion-icon name='trash'></ion-icon>").click((e)=>{
    var p = $(this).parent();
    p.remove()
    console.log(this)
  })

然后我在浏览器控制台中看到了这样的日志。

Window {parent: Window, opener: null, top: Window, length: 0, frames: Window, …}

现在我发现另一种使用$(e.target)的方法 但是我仍然很好奇为什么回调函数中的$(this)是“ window”。

我正在等待您的好答案:) thx!

  • 这就是我想在代码中执行的操作
$('#task').click((e)=>{

  var task = $("<li class='task'></li>").text($('#enter-task').val())

  var del = $("<ion-icon name='trash'></ion-icon>").click((e)=>{
    var p = $(this).parent();
    p.remove()
    console.log(this)
  })

  task.append(del)

  $("#tasklist").append(task)

})

1 个答案:

答案 0 :(得分:1)

jQuery .parent()方法返回span元素的父元素,如文档所示。

您的图标可能在span元素内,并且当您调用方法parent()var p = $(this).parent();时,您的目标是Window对象。