Javascript knockout.js afterRender在jquery弹出窗口中不起作用
细节并不是那么重要,但在这段代码中有一点很重要Javascript knockout.js afterRender在jquery弹出窗口中不起作用,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,细节并不是那么重要,但在这段代码中有一点很重要 $("#hidePopup").dialog({ dialogClass: "no-close", position: { my: "bottom", at: "bottom", of: $("#hideCross"), collision: "none" }, autoOpen: false, d
$("#hidePopup").dialog({
dialogClass: "no-close",
position: { my: "bottom", at: "bottom", of: $("#hideCross"), collision: "none" },
autoOpen: false,
draggable: true,
}).dialog("widget").find(".ui-dialog-titlebar").hide();
这应该只是找到一个id=hider的表单,然后运行alert(“heyyyy”)。
但它不起作用
请注意,当我将afterRender放在弹出窗口之外时,它工作得非常好
请帮忙
编辑:
我可以为这个问题添加更多信息。
这与afterRender无关,但ajaxForm不适用于弹出窗口。
有什么想法吗
编辑2:
self.renderPopup = function (element, data) {
$(element).find("form#hider").ajaxForm(function () {
alert("heyyyyy");
});
};
我试过这个,然后
self.renderApplication = function (element, data) {
filter: ($(element).filter("form#hider")[0]).ajaxForm(function () {
data.koIsHidden(true);
});
};
上面的代码给出了我在注释中编写的错误,第二个代码没有给出错误,但仍然没有捕获renderApplication函数。像调用函数一样调用RenderPop-afterRender:RenderPop(),或者如果有
form id=“hider”,您可能必须尝试$root.renderPop()或$parent.renderPop()。
在ko foreach
中,您将创建具有相同ID的多个表单。可能不是问题的根源,但这是一个问题。从de jQuery文档中,find()
”。获取当前匹配元素集中每个元素的后代。您需要将其替换为过滤器:($(element).filter(“form#hider”)[0]).ajaxForm(…
。我像EDIT2一样修复了它,但它说“无法读取未定义的属性'ajaxForm'”
<!-- ko foreach: { data: previewApplications(), afterRender: renderPopup} -->
self.renderPopup = function (element, data) {
$(element).find("form#hider").ajaxForm(function () {
alert("heyyyyy");
});
};
self.renderApplication = function (element, data) {
filter: ($(element).filter("form#hider")[0]).ajaxForm(function () {
data.koIsHidden(true);
});
};
$(element).filter(("form#hider")[0]).ajaxForm(function () {
data.koIsHidden(true);
});