gpt4 book ai didi

javascript - 使用不同的单击事件后,jQuery 单击事件未触发

转载 作者:行者123 更新时间:2023-11-30 17:57:01 25 4
gpt4 key购买 nike

我完全迷失在这里,我不知道为什么会这样。

我在 .js 文件中有以下代码:

$( document ).ready(function() {
showMessage();
$( '#message' ).slideDown( 'fast' );

//Hide Message//
$( '#m_close' ).click(function( event ) {
$( '#message' ).slideUp( 'fast' );
});
//---//
$( '#m_button' ).click(function( event ) {
showMessage();
$( '#message' ).slideDown( 'fast' );
});
});

现在,消息 div 已创建并在页面首次加载时完美地向下滑动。当我按下#m_close 时,div 完美地向上滑动。但是,如果我按#m_button,消息会向下滑动并显示所有正确的信息,但按#m_close 绝对没有任何作用。我在开发控制台中没有收到任何错误,似乎没有任何问题,它只是拒绝工作。我向 #m_close 添加了一个 slideDown,这样它会关闭然后重新打开,它会这样做,并且 #m_close 将无限工作,直到按下 #m_button。

这是怎么回事?

编辑:我的每个请求的 HTML:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="includes/style.1.css" rel="stylesheet" type="text/css" />
<script src="includes/jquery.js"></script>
</head>
<body>
<div id="message">

</div>
<button id="m_button">Message</button>
<script src="includes/functions.js"></script>
</body>

最佳答案

看起来消息是动态加载的,m_close 可能会使用 showMessage() 方法添加到 message 元素。

那么试试

$( document ).ready(function() {
showMessage();
$( '#message' ).slideDown( 'fast' );

//Hide Message//
$( '#message' ).on('click', '#m_close', function( event ) {
$( '#message' ).slideUp( 'fast' );
});
//---//
$( '#m_button' ).click(function( event ) {
showMessage();
$( '#message' ).slideDown( 'fast' );
});
});

当您使用 click 注册一个点击事件处理程序时,它只会将处理程序注册到当时存在于 dom 中的那些元素。当您再次调用 showMessage 时,现有的 m_close 将被删除并创建一个新的,因此 click 处理程序不再附加到新元素。这里的解决方案是使用事件委托(delegate),如上所示

关于javascript - 使用不同的单击事件后,jQuery 单击事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915681/

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