You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery 3.6按钮点击触发Uncaught TypeError错误求助

问题:jQuery点击按钮触发未定义属性读取错误

我有一个用jQuery实现客户端逻辑的应用,之前运行正常,但未修改代码的情况下,点击按钮时jQuery文件触发错误,且错误在执行到绑定的点击脚本前就已抛出。

按钮代码

<a id="lookup" href="#SummaryModal" type="button" data-toggle="modal" data-backdrop="static" class="btn btn-tertiary" title="Summary">
  <span class="glyphicon glyphicon-list" aria-hidden="true"></span>Quick Summary
</a>

绑定的脚本代码

$(document).on("click", "#lookup", function (e) {
    $.ajax({
        url: "/Home/GetSummary/",
        type: 'POST',                
        beforeSend: function (xhr) {
            xhr.setRequestHeader("XSRF-TOKEN",
                $('input:hidden[name="__RequestVerificationToken"]').val());
        },
        cache: true,
        async: true

    }).done(function (result) {
        $("#divSummary").html(result);
    });
})

错误信息

Uncaught TypeError: Cannot read properties of undefined (reading 'jQuery360059256788808060092')
at Data.get (jquery.js:4301:9)
at Data.access (jquery.js:4319:16)
at Function.data (jquery.js:4459:19)
at HTMLAnchorElement.delegate (jquery.validate.js:419:23)
at HTMLFormElement.dispatch (jquery.js:5430:27)
at elemData.handle (jquery.js:5234:28)
at Object.trigger (jquery.js:8719:12)
at Object.simulate (jquery.js:8788:16)
at HTMLDocument.handler (jquery.js:8822:17)
get @ jquery.js:4301
access @ jquery.js:4319
data @ jquery.js:4459
delegate @ jquery.validate.js:419
dispatch @ jquery.js:5430
elemData.handle @ jquery.js:5234
trigger @ jquery.js:8719
simulate @ jquery.js:8788
handler @ jquery.js:8822

已尝试的操作

  • 更新了jQuery文件
  • 确认jquery.validate 1.17与jQuery 3.6版本兼容,但错误仍存在

解决思路

  • 检查重复引入jQuery:打开开发者工具的Network标签,搜索jquery,确认页面只加载了一个版本的jQuery。多版本共存会导致内部数据缓存冲突,引发此类错误。
  • 排查jquery.validate的绑定逻辑:错误栈指向jquery.validate.js的delegate方法,说明表单验证的委托绑定出了问题。检查页面中表单验证的初始化代码,确保其在DOM完全加载后执行,且没有和按钮的事件逻辑冲突。
  • 检查元素的jQuery数据缓存:错误是读取jQuery内部数据属性失败,可在按钮点击前执行console.log($('#lookup').data())查看元素的jQuery数据;也可尝试先解绑所有相关事件再重新绑定:
    $(document).off('click', '#lookup').on('click', '#lookup', function(e) {
        // 原AJAX逻辑
    })
    
  • 排查模态框与事件的冲突:按钮同时触发Bootstrap模态框(data-toggle="modal")和自定义AJAX事件,可能存在逻辑冲突。暂时移除data-toggle属性,测试错误是否消失,再逐步排查模态框和AJAX的交互问题。
  • 强制清除浏览器缓存:即使未修改代码,浏览器可能缓存了旧脚本。按Ctrl+F5强制刷新页面,或手动清除浏览器缓存后重新测试。
  • 检查全局变量污染:其他脚本可能篡改了jQuery的原型或内部方法。在控制台执行$.fn.data.toString(),对比正常环境下的输出,确认data方法未被修改。

内容的提问来源于stack exchange,提问作者TheFallenOne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:12:46