gpt4 book ai didi

javascript - 使用带有事件处理程序的 Javascript、Jquery 时,怎么会知道 'event is event' ?

转载 作者:行者123 更新时间:2023-11-30 20:45:34 25 4
gpt4 key购买 nike

以下代码运行良好。每当我单击一个项目时,它都会打开或关闭。但是 event 有值(value)的东西对新手来说有一些奇怪的行为。

enter image description here

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>event.target demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<ul>
<li>item 1
<ul>
<li>sub item 1-a</li>
<li>sub item 1-b</li>
</ul>
</li>
<li>item 2
<ul>
<li>sub item 2-a</li>
<li>sub item 2-b</li>
</ul>
</li>
</ul>

<script>
function handler( event ) {
var target = $( event.target );
if ( target.is( "li" ) ) {
target.children().toggle();
}
}
$( "ul" ).click( handler ).find( "ul" ).hide();
</script>

一开始,我认为事件是从“https://code.jquery.com/jquery-10.2.js”声明的变量

所以我把'event'的名字改成了'xxx',然后测试。

function handler( xxx) {
var target = $( xxx.target );
if ( target.is( "li" ) ) {
target.children().toggle();
}
}
$( "ul" ).click( handler ).find( "ul" ).hide();

但它也运行良好并且没有错误。

最后,我像这样更改了代码。

function handler( xxx ) {
var target = $( xxx.target );
var target2 = $( ppp.target );

if ( target.is( "li" ) ) {
target.children().toggle();
}
}
$( "ul" ).click( handler ).find( "ul" ).hide();

但它会导致 Uncaught ReferenceError: ppp is not defined。所以我想知道 eventxxx 变量是如何以及从哪里来的。我还想知道 javascript 解释器如何将 'xxx' 翻译为具有 target 属性的函数。

最佳答案

handler 是作为回调传递给其他函数的函数。

处理程序 函数具有参数eventxxx 或者 定义它。 handler 函数稍后会用一些参数调用。

// this function will accept another function as argument
// this callback will then be called after 1 second, that function is called
// using an object as first argument
function callInOneSecond(callback) {
setTimeout(function() {
callback({
traget: 'something'
})
}, 1000);
}


// it does not matter how the first parameter is called, it will always
// hold the first argument that is passed to it when "handler" is called.
function handler(xxx) {
console.log('was called');
console.dir(xxx);
}

callInOneSecond(handler);

关于javascript - 使用带有事件处理程序的 Javascript、Jquery 时,怎么会知道 'event is event' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48740002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com