queryZUI框架里面的一个模态包含另一个模态,都绑定了 $()选择器.on(shown.zui.modal) ,但是handle不一样,我用了选择器,为什么handler会被调用两次
时间: 2024-04-15 21:32:05 浏览: 128
如果在 ZUI 框架中,一个模态框包含了另一个模态框,并且两个模态框都绑定了 `$().on('shown.zui.modal', handler)` 方法,且使用了相同的选择器,那么在打开外层模态框时,内层模态框的处理程序(handler)会被调用两次。
这是因为在打开外层模态框时,内层模态框也会被显示,并且会触发自己的 `'shown.zui.modal'` 事件。由于两个模态框都使用了相同的选择器进行绑定,因此选择器匹配到了内层模态框和外层模态框,导致处理程序被调用了两次。
为了避免这种情况,你可以使用更具体的选择器来区分内层模态框和外层模态框,确保每个模态框的事件处理程序只会在相应的模态框上被调用。例如,可以使用不同的选择器或添加特定的类名来区分模态框。
以下是一个示例代码,演示了如何使用不同的选择器来绑定事件处理程序:
```javascript
$('#outerModal').on('shown.zui.modal', function () {
console.log('外层模态框已经显示完成');
// 执行外层模态框相关操作
});
$('#innerModal').on('shown.zui.modal', function () {
console.log('内层模态框已经显示完成');
// 执行内层模态框相关操作
});
```
在上述代码中,我们使用了不同的选择器 `#outerModal` 和 `#innerModal` 分别绑定了外层模态框和内层模态框的 `'shown.zui.modal'` 事件处理程序。这样,无论打开哪个模态框,对应的事件处理程序都会被正确调用,避免了重复调用的问题。
阅读全文