javascript - 与我的实时站点集成时,隐藏和显示 div 的 JQuery 代码不起作用
问题描述
我不确定我在这里做错了什么。在这里和 JSFiddle 上都可以正常工作,但是当我尝试将代码集成到我的 WooCommerce 网站时,它什么也没做。
我的代码相当简单,它只是检查图像的尺寸并根据检查结果显示/隐藏带有适当消息的 div。
var _URL = window.URL || window.webkitURL;
$("#filecheck").change(function() {
var file, img;
if ((file = this.files[0])) {
img = new Image();
img.onload = function() {
if (this.width < 1800 && this.height < 1800) {
$('.pass').css('display', 'none');
$('.fail').css('display', 'block');
}
else {
$('.pass').css('display', 'block');
$('.fail').css('display', 'none');
}
};
img.src = _URL.createObjectURL(file);
}
});
.pass {
display: none;
}
.fail {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="file" id="filecheck" />
<div class="pass">
image quality good
</div>
<div class="fail">
image quality too low
</div>
谁能看到我在这里做错了什么?这可能是非常基本的东西,但我对此很陌生。
解决方案
似乎您可能在对象存在于 DOM 之前附加了处理程序。如果我在加载后将您的脚本注入页面(即,将其复制并粘贴到 JavaScript 控制台中),那么它似乎可以工作。
您可以尝试三件事:
您可以尝试document
先将侦听器附加到始终存在的位置,然后使用#filecheck
选择器:
$(document).on('change', '#filecheck', function () {
// Your code here
});
这可能不是最好的性能,但可以解决问题。
您还可以尝试将代码包装在ready()
处理程序中:
$(document).ready(function() {
// Your event handler code
});
您也可以尝试将文件处理脚本移动到文档正文的末尾,看看是否可行。
推荐阅读
- node.js - 使用 spyOn 和 Jest 模拟 AWS SNS 发布调用
- python - 搜索 Windows 资源管理器
- python - 从 10 个不同文件中获取字符串后的数字以使用 python 构建向量
- android - 如何使用 kotlin 获取 android 浏览器历史记录?
- webpack - 赛普拉斯抱怨在开发中工作的 Pdfjs-dist 的 Webpack 构建
- javascript - 在没有 Node.js 的情况下部署 Next.js 应用程序
- c# - 是否可以从 sharepoint 网站中提取 powerpoint 并将其提供给具有 Asp.net 核心的客户端?
- javascript - JavaScript 中最接近 Rust Result 枚举的东西是什么?
- unity3d - 在 Unity 中防止相机低于玩家
- c# - 如何在 Facebook 上将照片添加到市场?C# 硒