0

我希望有人可以指出一个相对的 jQuery/jqModal 新手正确的方向来调试这个错误。我正在将 html 片段加载到 div 中,然后使用 jqModal 将该 div 显示为模式对话框。问题是显示了 div,但没有显示我更新的 html。

我在 jquery 调用的响应中显示我的 jqModal 对话框,函数 foo 从 onclick 事件中调用:

function foo(url)
{
    $.ajax({
        type: "GET",
        url: url,
        success: function(msg)
        {
            $('#ajaxmodal').html(msg);
            $('#ajaxmodal').jqmShow();
        }
    });
}

ajaxmodal 是一个简单的 div。

最初我认为问题一定出在我传递给回调的 html 片段(msg)中,但我不认为就是这样,即使我注释掉 $('#ajaxmodal ').html(msg) 行或将其传递给硬编码 html。我想我已经正确配置了 jqModal,使用我们的 ajaxmodal div 的其他调用正常工作,我能够显示模式,根据服务器响应更新内容等。

当我尝试在 firebug 中调试时,在调用 .jqmShow() 后出现以下错误。我有时在其他地方看到错误,似乎页面可能还没有加载,我承认我对此感到困惑,因为我们已经将 jqModal 选择器包装在 $(document).ready()电话,所以也许我有一个更大的问题是这个电话恰好触发了?

从 jquery.jqModal.js 文件的第 64 行: js err is $(':input:visible',hw)[0] 在行中未定义:

f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}}

当我在 Firefox 中逐步执行此操作时,hw[0] 似乎没问题,它引用了我们的 '#ajaxmodal' div。

提前感谢您在跟踪此问题方面的任何建议?

4

4 回答 4

2

如果您没有需要关注的输入,您可以在 jqModal.js 中更改:

f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},

至:

f=function(h){try{}catch(_){}},

反正我就是这么做的;)

于 2010-11-05T09:22:31.747 回答
0

这个问题有点老了,但这是我在谷歌上找到的类似情况的唯一结果之一,所以我想我会分享我的经验。

jqModal 中有问题的行试图聚焦它在弹出表单中找到的第一个输入元素,如果没有,则会引发异常。这就是为什么它位于异常块中的原因 - 如果禁用 firebug,不会发生任何不好的事情。

但是,如果您像我一样发现错误冒出来有点烦人,一种解决方法是向您正在执行 jqmShow 的元素添加一个虚拟输入元素。

于 2009-11-10T18:39:58.853 回答
0

我不熟悉 jqModal,但您可能想尝试

append()

而不是

html()

我不确定这是否会有所帮助,但值得一试

于 2009-08-28T19:48:16.590 回答
0

找到了我的问题的解决方案,发布结果以防它帮助其他人,虽然我不太明白。

这个问题(我认为)与我进行 .html() 调用时 ajaxmodal 不完全被初始化为 jqModal 元素有关。调用 .jqmShow 用我们的默认文本初始化 div。我曾认为将其放入文档就绪函数中足以初始化对话框:

$('#ajaxmodal').jqm({ajax: '@href', trigger: 'a[rel*=modal]', ajaxText: 'Loading...'});

但为了解决我的问题,我不得不撤销电话:

$('#ajaxmodal').jqmShow();
$('#ajaxmodal').html(msg);
于 2009-08-29T01:16:02.337 回答