问题描述
我有一个包含嵌套多字段的对话框。在嵌套的多字段中,有下拉列表和其他字段(需要验证)。
对话框的详细信息:
多字段
容器(名称 = 父级)
Multifield
Container (name = Child)
dropdown (class = cq-dialog-dropdown-showhide-multi)
TextField
用于循环的Javascript代码:
(function ($,document,ns) {
const A = function () {
console.log("In A");
$(this).find("[data-granite-coral-multifield-name='./Child'] .coral3-Multifield-item").each(function( index ) {
console.log("In Loop");
})
};
$(document).on("change",".cq-dialog-dropdown-showhide-multi",function() {
A();
});
$(document).on("dialog-ready",function() {
A();
});
})(Granite.$,Granite.author);
一旦对话框内容加载完毕(打开对话框时),函数 A 就会被调用。
假设,我的父多字段有 1 个项目,其子多字段有 2 个项目:
Func A 在对话框打开时被调用,并且“In A In Loop In Loop”被打印在控制台中。现在,如果我更改下拉值,func A 会再次被调用,但这次只有“In A”会在控制台中打印出来。即使子项的数量仍然相同,循环也不会被执行。
不确定到底是什么问题。请指教。
解决方法
上面的代码在一行更正后开始工作:
$(this).find("[data-granite-coral-multifield-name$='Child'] .coral3-Multifield-item").each(function( index ) {