click(jquery) 在加载脚本后立即执行函数,并且不响应点击



当按下按钮时,我试图使用.click(jquery 3.4.1(执行一个函数,但该函数在页面加载后立即执行。经过一些尝试,我认为可能有一些代码使它以这种方式运行,所以我创建了带有基本元素的新文件并尝试使用它,但它仍然不起作用。我想我可能做错了什么,所以我检查了一个教程,但它没有帮助,因为我在做同样的事情。 我也尝试.on('click', function)但结果是一样的。

.html文件

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1 style="text-align: center;">Some Text</h1>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="test.js"></script>
</body>
</html>

.js文件

$('h1').click(console.log('Clicked'))

知道为什么它不起作用吗?

您正在将点击事件侦听器附加到 h1

$('h1').click(console.log('Clicked')) 

它的作用是执行控制台,并将返回的内容分配给事件侦听器。所以这就是它不起作用的原因。您基本上只是执行以下操作,因为控制台不返回任何内容。

$('h1').click(undefined)

所以你必须给它分配一个函数

$('h1').click(function () { console.log('Clicked') }) 

// Your original way written out to see what is happening
// $('h1').click(console.log('Clicked')) // code below is same thing as this line 
var cl = console.log("Clicked Original Way") // will log message
console.log('cl is:', cl) // cl is: undefined
$('h1').click(cl) // aka $('h1').click(undefined)
// solution 1
$('h1').click(function() {
console.log('Clicked')
})
// solution 2
function myClickFunction() {
console.log('Clicked w/ function')
}
$('h1').click(myClickFunction)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1 style="text-align: center;">Some Text</h1>

由于您传入的参数不是可调用的函数,因此当单击实际发生时,jQuery 无法调用它。尝试这样的事情:

$(document).ready(function() {
$('h1').on('click', function(e) {
console.log('clicked');
});
});

>click需要一个函数

$('h1').click(function() {
console.log('Clicked');
});

您这样做的方法是输出'Clicked'并将undefined处理程序"发送"到click()

在此处查看文档

最新更新