【发布时间】:2021-05-03 19:17:15
【问题描述】:
我有这段代码用于 jQuery UI
function ViewClient(RelationID) {
console.log('entering');
$('a[id^="contact_show"]').on('click', function (e) {
console.log('clicking '+RelationID);
ShowClientInfo(RelationID);
$('#accordion').accordion({active: 2});
});
}
用户单击以执行操作的链接如下所示(并且位于手风琴的面板 1 上):
<a href="#" id="contact_show_204" onclick="ViewClient(204);">View Client</a>
这应该会关闭面板 1,然后打开面板 2。
手风琴初始化如下:
$( "#accordion" ).accordion({
active: false,
heightStyle: "Content",
collapsible: true
});
当我单击其中一个 ID 时,第一次单击总是被忽略(不显示正确的手风琴)。它只在第二次和以后的点击中显示正确的手风琴。在我第一次单击时,DOM 已准备就绪。我不知道还要检查什么。有什么想法吗?
编辑:
我现在添加了 console.log 用于输入函数并将元素单击到 ViewClient() 函数中,发生的情况是,每次单击时,我都会收到日志消息“正在输入”,但单击仅适用于第二次点击。但奇怪的是,它似乎并没有“重置”事件:
entering
entering
clicking 204
clicking 206
entering
clicking 204
clicking 206
clicking 206
entering
clicking 204
clicking 206
clicking 206
clicking 206
请注意,我第二次单击时,单击了不同的 ID (206)。但如果我也点击原始 ID (204),它也会做同样的事情。我尝试返回 false 和 preventDefault()。在我看来,这像是延迟的 DOM 更新?
【问题讨论】:
-
您需要在minimal reproducible example 中显示更多代码,以便我们提供帮助
-
通常不会在每次点击时调用它。你在页面加载时调用一次,然后你可以调用手风琴方法来显示它的一部分。
-
谢谢你,@Barmar。用户将单击的链接在一个手风琴窗格中,并且必须在同一个手风琴中打开另一个窗格,所以我相信这是正确的补充。
-
@mplugian - 感谢您的评论。这是在数据表列表中单击联系人时使用的唯一 JS。用户单击的链接现在已添加到问题中。
标签: jquery jquery-ui-accordion