$(...).on is not a function 解决方案

比如在js加入

$("p").on("click",function(){
    alert("The paragraph was clicked.");
});

如果报$(…).on is not a function 错误
可能是你的jQuery的插件版本过低
引入较高的版本 如 jquery-1.8.3.min.js

在页面导航过程中,当尝试通过 `beforePage.$vm.refreshRequest()` 调用前一个页面的方法时,出现 `.$vm.refreshRequest is not a function` 错误,通常是因为目标页面的 `$vm` 对象未正确初始化或方法未定义。 ### 解决方案 #### 1. 确保前一个页面定义了 `refreshRequest` 方法 确保前一个页面(即 `pageB`)的 Vue 实例中确实定义了 `refreshRequest` 方法,并且该方法是响应式的。例如: ```javascript // pageB.vue export default { methods: { refreshRequest() { console.log('刷新请求执行'); // 实际刷新逻辑 } } } ``` #### 2. 使用 `$vm` 之前检查其存在性 在调用 `refreshRequest` 方法之前,确保 `beforePage.$vm` 是一个有效的 Vue 实例。可以通过打印 `beforePage.$vm` 来确认其状态: ```javascript uni.navigateBack({ delta: 1, success: function () { if (beforePage && beforePage.$vm && typeof beforePage.$vm.refreshRequest === 'function') { beforePage.$vm.refreshRequest(); } else { console.error('refreshRequest 方法未定义或 $vm 未正确初始化'); } } }); ``` #### 3. 使用事件总线进行跨页面通信(可选) 如果 `$vm` 的方式在复杂场景下难以维护,可以考虑使用全局事件总线进行跨页面通信。例如,使用 Vue 的 `$emit` 和 `$on`: ```javascript // 在 pageB 中监听事件 created() { this.$root.$on('refresh-request', this.refreshRequest); }, methods: { refreshRequest() { console.log('通过事件触发刷新'); } } ``` ```javascript // 在返回页面时触发事件 uni.navigateBack({ delta: 1, success: function () { this.$root.$emit('refresh-request'); } }); ``` #### 4. 使用全局状态管理工具(如 Vuex) 如果项目较为复杂,建议使用 Vuex 进行全局状态管理。通过 `store` 触发 `action` 或 `mutation` 来实现页面间的数据同步和方法调用。 ### 总结 - 确保 `refreshRequest` 方法在目标页面中正确声明。 - 检查 `$vm` 是否为有效的 Vue 实例。 - 考虑使用事件机制或 Vuex 进行跨页面通信,以提高代码的可维护性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值