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

获取父元素data-field_photo_id属性时返回undefined问题排查

问题解决:无法获取HTML data属性值

核心问题

你的代码中jQuery选择器存在错误——closest('field')和find('field_info')是在查找名为<field>和<field_info>的HTML标签,但实际上这两个都是CSS类,需要在选择器前加上.。这就是导致你获取data-field_photo_id时返回undefined的直接原因。

修正后的JavaScript代码

(function($){
    $.dispatcherFiles = {
        $filesDropzone: null,
        $parallelUploads: 100,
        $maxFiles: 10,
        $files: [],

        cacheDom: function(){
            this.$body = $('body');
        },

        functions: {
            uploadFiles: function (e) {
                // 修正类选择器,添加.前缀
                let $fieldContainer = $(e.currentTarget).closest('.field');
                let $fieldInfo = $fieldContainer.find('.field_info');
                // 使用.data()方法读取data属性,更符合jQuery规范
                let photoID = $fieldInfo.data('field_photo_id');
                console.log($fieldInfo);
                console.log(photoID);
            },
        },

        events: function(){
            this.$body.on('click', '.field .field_form .btnUpload', this.functions.uploadFiles.bind(this));
        },

        init: function () {
            this.cacheDom();
            this.events();
        }
    };

    $.dispatcherFiles.init();

})(jQuery);

关键修正点

  • 修正选择器:将closest('field')改为closest('.field'),find('field_info')改为find('.field_info'),确保正确选中目标类元素
  • 改用.data()方法获取data属性:这是jQuery处理data-*属性的标准方式,能自动识别数据类型,比.attr()更简洁可靠
  • 优化DOM查询:先获取父级容器再查找子元素,减少重复DOM遍历操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:52:20