javascript - 防止在 VueJS 生成的代码中执行 jQuery
问题描述
我正在努力用 VueJS 替换 jQuery,但我的旧 jQuery 代码仍在 VueJS 生成的代码上执行。
有一种方法可以防止 jQuery 代码在 VueJS 代码上执行?
我不能简单地在 VueJS 页面上禁用 jQuery,因为页面的某些部分仍然需要 jQuery。
我想我应该检查一个 HTML 有data-v-xxxxx
属性,然后阻止 jQuery 执行它。
我找不到阻止在某些标签上执行 jQuery 的方法。
这是可行的还是我需要找到另一种方法?
解决方案
如果不查看您的应用程序,很难提出解决方案。无论如何,这是一个尝试。
假设您的旧 HTML/jQuery 是这样构造的:
<div class="mainDiv">
<header>
<!-- Some complicated HTML for the header !-->
</header>
<!-- Rest of the app !-->
<div class="someContainer"></div>
</div>
假设您开始将标头重构为 vueJs 组件,您可以尝试使用 CSS 选择器和事件委托将其与 jQuery 隔离。
CSS 选择器将允许您仅在某些元素内选择元素。
// before
const $root = $(".mainDiv");
// after
const $root = $(".someContainer");
// select an element inside the new root
$root.find("p")
// catch all clicks inside this root.
$root.on("click", e => {});
你可以做什么,虽然我不建议它传递一个新版本的 jQuery 对象,它已经预先选择了正确的根。
例如,如果您的应用程序$("selector").click()
在您的应用程序中到处都有一些,那么您可以将全局别名$
为一个新函数:
jQuery.noConflict(); // will restore the old $ global var
const $root = jQuery(".someContainer");
// very basic and incomplete proposal
const $ = function (...args) {
return $root.find.apply($root, args);
};
window.$ = $; // make it globally available.
推荐阅读
- python - 输入几何具有未知 (0) SRID
- php - 我的布尔值在数据库 Laravel 8 中没有改变
- mysql - MY SQL:请确认我的查询是否正确,否则请提供正确的查询
- c - C中的信号处理程序
- python-3.x - 如何使用python从某些子目录中搜索某些文件
- python - 在 .gcode 文件中搜索以特定字母开头的字符串
- batch-file - 批处理脚本格式化
- python - 我在使用逻辑回归实现降雨预测分类模型时遇到错误
- selenium-webdriver - 在 chrome 扩展和自动化测试之间创建通信桥梁
- azure - 如何从 C# 应用程序访问 Power BI 管理 API