[英]jQuery objects don't work
當我將jQuery對象存儲在變量中時,如下所示:
var $myObject = $("div#comments");
...我不能使用對象$ myObject!
這就是我正在做的改變div#comments的html:
$myObject.html(data);
它什么都不做。 我已經嘗試過這種方式了,這次選擇div里面的一個元素#comments:
$("div.comment", $myObject);
它不起作用。
我只是想在變量中保存一個元素然后使用它 !
注意:有些人不會在變量名之前加上$,如下所示:myObject。
你是在加載文件后調用它嗎?
// 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");
。
您只提供了代碼的snippits,因此無法確定,但可能性是您在<div>
元素之前的<div>
<script>
元素中運行代碼並且不執行任何操作(例如使用ready事件)來延遲代碼的執行,直到div存在。
結果是你得到一個沒有找到元素的jQuery對象。 移動腳本元素,使其位於div之后。 就在身體的結束標簽之前是一個好地方。
語法完全有效,應該有效。 你是否動態附加評論div? 您應該alert( $myObject.length )
以查看它是0還是1,如果它的0表示它從未被拾取。
您可能需要將var
語句綁定到dom ready,window load或ajax callback之后。
好吧,這種語法非常好,所以其他的東西正在發生。 你能展示你的標記嗎? 如果添加警報($ myObject.length),你會得到什么? 最后要檢查一下......你是在一個准備就緒的處理程序中運行它嗎?
好的,謝謝大家。 我得到了解決方案。
我想到了在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.