当我将jQuery对象存储在变量中时,如下所示:
var $myObject = $("div#comments");
...我无法使用对象$ myObject!
这就是我正在做的改变div的#html的注释:
$myObject.html(data);
它什么都不做。我已经尝试过这种方式,这次选择div中的一个元素#views:
$("div.comment", $myObject);
它不起作用。
我只是希望能够在变量中保存元素,然后使用它!
注意:有些人不会在变量名之前加上$,如下所示:myObject。
答案 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