【问题标题】:jQuery objects don't workjQuery 对象不起作用
【发布时间】:2011-03-30 14:38:10
【问题描述】:

当我将 jQuery 对象存储在变量中时,如下所示:

var $myObject = $("div#comments");

...我无法使用对象 $myObject!

这就是我正在做的改变 div#cmets 的 html:

$myObject.html(data);

它什么都不做。这种方式我也试过了,这次是在 div#cmets 里面选择一个元素:

$("div.comment", $myObject);

它不起作用。

我只是希望能够将一个元素保存在一个变量中,然后使用它

注意:有些人不把$放在变量名前,像这样:myObject.

【问题讨论】:

  • 你做错了什么;这应该工作

标签: javascript jquery variables object


【解决方案1】:

您是在 文档加载之后调用它吗?

     // This will ensure that the code doesn't run until
     //    the document has loaded
$(function() {
    var $myObject = $("div#comments");
});

(这是 jQuery 的 .ready() 方法的快捷方式。)

只要加载了文档,并且加载时页面上有一个 ID 为 comments<div>,它应该可以工作。

还请记住,页面上只能有 一个 元素具有任何给定 ID。因此,实际上使用$("#comments"); 而不是$("div#comments"); 会更好(更快)。

【讨论】:

  • @Akay - 是的,也不是。这是同一件事的捷径。 :o)
  • 哦,我明白了,有人可以告诉我如何使我的代码看起来像 cmets 中的代码 :D .. 上面的评论很尴尬
  • @Akay - 使用grave accent 字符,它位于左制表键上方。 en.wikipedia.org/wiki/Grave_accent = `
【解决方案2】:

您只提供了代码的片段,因此无法确定,但很有可能您是在 <script> 元素中运行代码,该元素出现在 <div> 元素之前,而不是做任何事情(例如使用 ready 事件)来延迟代码的执行,直到 div 存在。

结果是你得到一个没有找到任何元素的 jQuery 对象。移动脚本元素,使其位于 div 之后。 Just before the end tag for the body 是个好地方。

【讨论】:

    【解决方案3】:

    语法完全有效,应该可以工作。您是否动态附加 cmets div?你应该alert( $myObject.length )看看它是0还是1,如果它是0则意味着它从未被捡起。

    您可能需要绑定 var 语句,直到 dom 准备好、窗口加载或您的 ajax 回调之后。

    【讨论】:

      【解决方案4】:

      嗯,这个语法非常好,所以正在发生其他事情。你能显示你的标记吗?如果添加警报($myObject.length),您会得到什么?最后要检查的一件事...您是否在准备就绪的处理程序中运行它?

      【讨论】:

        【解决方案5】:

        好的,谢谢大家。 我得到了解决方案。

        我考虑了事物在 DOM 中加载的顺序并找到了解决方案。 问题(与标记)是:

        <div id="comments">    
            <script type="text/javascript">
            loadComments(params);
            </script>
        </div>
        

        上面的代码是用PHP写的! 因此,它在浏览器读取代码后立即执行该功能。 我已经尝试将脚本放在页面末尾,在调用函数之后。该函数尚未定义。

        所以,函数 loadComments 应该在 div 准备好并且定义函数之后执行。

        我用 .ready() 将代码封装在标签之间,如下所示:

        <script type="text/javascript">
        $(function() {
            loadComments(params);
        });
        </script>
        

        这是一种干扰。 对不起大家! 非常感谢。

        如果你有同样的问题,但你不明白我做了什么,问我。呵呵

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多