【问题标题】:jQuery first click ignored?jQuery第一次点击被忽略?
【发布时间】: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


【解决方案1】:

您已将两个点击处理程序分配给相同的元素。脚本中的那个和标记中的那个都会在每次点击时触发。你需要单独初始化你的手风琴,你应该在 jQuery 点击处理程序中调用ViewClient()

【讨论】:

    【解决方案2】:

    您使用的语法是用于初始化手风琴。要更改现有手风琴的设置,您必须使用option 方法(或options,如果您想一次更改多个设置)。

    $("#accordion").accordion(); // initialize accordion
    $('a[id^="contact_show"]').on('click', function (e) {
        ShowClientInfo(RelationID);
        $('#accordion').accordion("option", "active", 2); // change the active pane
    });
    

    【讨论】:

    • 谢谢您-我已更改为您的说明,但它仍然忽略了第一次单击链接。第二个链接以后工作正常。
    • 你之前有没有初始化手风琴?
    • 我想知道它是否也与我的其他问题有关:stackoverflow.com/questions/65961605/… - 我重新格式化了手风琴内的 HTML 代码,以查看所有标签都已正确关闭,它们是 - 但 FOUC 做了我认为它可能是损坏的 HTML。想知道这里提到的 FOUC 是否与点击异常有关 - 它是同一个手风琴。
    • 是的,手风琴已提前初始化。我将把它的初始化方式放在问题中。
    • 感谢您的努力,巴尔玛!现在@isherwood 的回答解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多