Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockout.js afterRender在jquery弹出窗口中不起作用_Javascript_Jquery_Knockout.js - Fatal编程技术网

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);
                    });