jQuery对象不起作用

时间:2010-08-16 19:02:42

标签: javascript jquery variables object

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

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

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

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

$myObject.html(data);

它什么都不做。我已经尝试过这种方式,这次选择div中的一个元素#views:

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

它不起作用。

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

注意:有些人不会在变量名之前加上$,如下所示:myObject。

5 个答案:

答案 0 :(得分:6)

在加载文档后,您是否正在调用

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

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

只要文档已加载,并且加载时页面上有<div> ID为comments,就应该有效。

还要记住,页面上只有一个元素,并且具有任何给定的ID。因此,实际上$("#comments");代替$("div#comments");会更好(更快)。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

语法完全有效,应该可行。你是否动态附加评论div?您应该alert( $myObject.length )查看它是0还是1,如果它的0表示它从未被拾取过。

您可能需要将var语句绑定到dom ready,窗口加载或ajax回调之后。

答案 3 :(得分:1)

嗯,这种语法非常好,所以还有别的东西正在发生。你能展示你的标记吗?如果添加警报($ myObject.length),你会得到什么?还有一件事要检查......你是在一个准备就绪的处理程序中运行吗?

答案 4 :(得分:0)

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

我考虑了DOM中加载内容的顺序并找到了解决方案。 问题(带标记)是:

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

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

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

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

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

这是一种分心。 大家好! 非常感谢。

如果你有同样的问题并且你不明白我做了什么,请问我。 XD