JQuery UI 1.8.10 无法读取未定义的属性“3”

Posted

技术标签:

【中文标题】JQuery UI 1.8.10 无法读取未定义的属性“3”【英文标题】:JQuery UI 1.8.10 Cannot read property '3' of undefined 【发布时间】:2012-08-10 11:53:46 【问题描述】:

我使用 JQuery UI 1.8.10 和 jquery 最新版本。

我的代码是:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.js"></script>
<script type="text/javascript" src="/cms/ww.admin/login/login.js"></script>
</head>
<body>

<div id="header"></div>
<?php
    if(isset($_REQUEST['login_msg']))
    
        require SCRIPTBASE.'cms/ww.incs/login-codes.php';
        $login_msg = $_REQUEST['login_msg'];
        if(isset($login_msg_codes[$login_msg]))
        
            echo '<script>$(function()$("<strong>'.htmlspecialchars($login_msg_codes[$login_msg]).'</strong>").dialog(modal:true););</script>';
        

?>

为什么这会给出未定义错误的无法读取属性“3”?

给出错误的文件是jquery-ui.js on line 186

好的,现在我将其更改为:

</head>
<body>

<div id="header"></div>
<div id="login-msg"></div>
<?php
if(isset($_REQUEST['login_msg']))
require SCRIPTBASE.'cms/ww.incs/login-codes.php';
$login_msg=$_REQUEST['login_msg'];
if(isset($login_msg_codes[$login_msg]))
   echo '<script>$(function()
                    $("#login-msg").html("<strong>'.htmlspecialchars($login_msg_codes[$login_msg]).'</strong>").dialog(modal:true););</script>';


 ?>

但还是同样的错误

【问题讨论】:

你确定不需要 / before `'cms/ww.incs/login-codes.php'; 哪一行/文件给了你这个错误?? 不,我不需要在 cms 之前添加 /,因为它在 de scriptbase 中。 文件是 jquery-ui.js 在第 186 行 能贴出使用jquery-ui的代码吗? 【参考方案1】:

我确认不兼容问题。 试过了 jquery-1.8.0 和 jquery-ui-1.8.4

【讨论】:

【参考方案2】:

这是您的 jQueryUI 中的一个错误,它使用了一个 :data 选择器(如果您在调用堆栈中向上,您会看到它),它已被弃用/与最新的 jQuery 不兼容。 试试这个 jQueryUI:

http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.22/jquery-ui.min.js

这里的例子:

http://jsfiddle.net/techunter/RyUVq/

【讨论】:

您可以编写 $("

text

").dialog(),但确实不可取,因为您以后无法对该对话框执行任何操作(无选择器) .
谢谢你我的英雄,我早上搜索并试图找到一个修复谢谢。【参考方案3】:

您发现了错误/不兼容!

这不起作用 jquery (1.8.0):http://jsfiddle.net/mZPWS/

较旧的 jquery 版本 (1.7.2) 正在运行:http://jsfiddle.net/mZPWS/1/

【讨论】:

【参考方案4】:

这可能不是您问题的根源,但也许为您的 .dialog() 小部件设置一个 div 可以帮助您。

您的 js 行 $("&lt;strong&gt;'.htmlspecialchars($login_msg_codes[$login_msg]).'&lt;/strong&gt;").dialog(modal:true 似乎使用了一条简单的消息,在大多数情况下都有效。

你可以尝试改用这条线吗:

$(function()

    $("#header") // or any div you have
    .html("<strong>'.htmlspecialchars($login_msg_codes[$login_msg]).'</strong>")
    .dialog(modal:true);
);

另外,请确保您的“/cms/ww.admin/login/login.js”不是错误的来源,js 错误控制台很容易丢失,并且可以在错误时将您指向 jquery-ui.js在别的地方。

【讨论】:

去掉注释,.html如果放在同一行需要跟在选择器后面。我在答案中添加了一行,您的 login.js 文件中有什么? 我想你忘记了一个 ) 在 function( 应该是 function() 但不它仍然不工作 已更新,谢谢!您是否尝试过删除该行的 .dialog() 部分?没有它你还有错误吗?它会排除这部分,你的错误肯定来自 login.js

以上是关于JQuery UI 1.8.10 无法读取未定义的属性“3”的主要内容,如果未能解决你的问题,请参考以下文章

jQuery-UI - “无法读取未定义的属性‘步骤’”

jquery-ui.js:8056 未捕获类型错误:无法读取未定义的属性“左侧”

未捕获的类型错误:无法读取未定义的属性“ui”。选择croparea时出现JQuery JCrop问题

JQuery:未捕获的类型错误:无法读取未定义的属性“调用”

无法读取未定义、材质 ui、theme.breakpoints 的属性“向上”

RadListView Telerik UI“无法读取未定义的属性‘setLayoutParams’”