【问题标题】:Window is supposed to close on click, instead closes immediately窗口应该在点击时关闭,而是立即关闭
【发布时间】:2018-06-15 22:07:50
【问题描述】:

当用户单击“关闭”链接时,该窗口应该关闭。相反,它在打开时立即关闭。这是怎么回事?

<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<style>
img {
    display: block;
margin-left: auto;
margin-right: auto;
width: 50%;
}
p {
    text-align: center;
}
</style>

 <script 
 src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
 </script>
</head>
<body>
<img src = "assets/images/trophy.png"></img>
<p>YAY!  U R TEH WINZ!</p>
<p><a href = "#" class = "exit">Close.</a></p>
<script>
$(".exit").onClick(this.window.close());    
</script>
</body> 
</html>

<!-- UGH, what is going on?  Either clicking takes you nowhere, or it happens 
right on load! -->

【问题讨论】:

  • 这是执行顺序,函数参数在调用函数之前被评估。在这种特殊情况下,评估参数会关闭窗口。几乎任何其他参数都会出现类型错误,onClick 不是 jQuery 方法。正确的语法是$(".exit").click((e) =&gt; {this.window.close();});

标签: javascript jquery html window


【解决方案1】:

jQuery 中没有 onClick 事件。 因此,您将在控制台中收到以下错误:

Uncaught TypeError: $(...).onClick is not a function

jQuery .click() 事件 - Click Here

你的活动应该如下:

$(".exit").click(function(){
     window.close();
});    

【讨论】:

  • 什么?首先您说没有这种方法,然后您使用相同的不存在的方法说应该使用..?此外,OP 说,窗口会立即关闭,在这种情况下他们不会收到错误。
  • 首先我说没有.onClick()方法。相反,有 .click() 方法。并且 OP 不应该注意到控制台中的错误。肯定会出现错误。
  • 但是你在例子中使用onClick在“你的事件应该如下:”之后...如果窗口关闭,不会有错误信息去看看。
  • 我看到错误消息只是通过警报而不是窗口关闭来测试事件侦听器。简单!
  • 是的,但是对于 OP 手头的非常特殊的情况,仍然不会有任何错误。
【解决方案2】:

正如@Ankit Rajput 在另一个答案中提到的,jQuery 没有 onClick 方法。它有clickon。因此,您必须编写 $(...).click(...)$(...).on('click', ...) 而不是 $(...).onClick(...),才能获得正确的方法调用。

原始答案的另一个问题是作为参数传递给onClick 的是this.window.close()。但是,必须在调用函数之前评估参数,并且 this.window.close() 被评估为函数调用,因为这就是事实。因此,一旦脚本执行,this.window.close 就会被调用。你想要的是() =&gt; this.window.close(),它被评估为匿名函数而不是函数调用。

将这两个独立问题的解决方案放在一起,您最终会得到类似$(...).on('click', () =&gt; this.window.close()) 的内容。

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2021-02-24
    • 2020-11-08
    相关资源
    最近更新 更多