我在jQuery中試圖做的是將第一個註釋從一個組中隱藏起來,直到用戶單擊一個按鈕,然後輸出第一個註釋以便它可見。我有這個工作,一點。我希望它在頁面加載時發生,所以我將它放在document.ready中,但它不起作用。所以我把它附加到一個mousemove事件,它的工作原理。如果文本存在,用jQuery替換文本
但我現在想要做的是如果有評論,採取評論和顯示它像我以前一樣。但是,如果沒有評論,則顯示「無評論」字樣。以下是我正在使用的代碼。
if (jQuery('.dsq-commenter-name').length){
jQuery(document).mousemove(function() {
jQuery('#comments p strong').text(jQuery('.dsq-commenter-name').text());
jQuery('#comments p span.comment_excerpt').text(jQuery('.dsq-comment-text').text());
});
}
此代碼無效。如果我帶走if語句,它可以很好地替換文本,但如果沒有任何註釋,它只會留出空白空間,而不會留下「無評論」字樣。如果我把代碼直接放入控制檯,它就可以工作。所以我不確定爲什麼在頁面加載時不起作用。我假設它必須是if語句的東西,但我已經嘗試了各種各樣的東西,並且無法使其工作。編輯: 沒有在這段代碼中顯示,但我有一切在jQuery(文檔).ready(函數(){ ,似乎並沒有幫助。但評論由Disqus處理,所以我我以爲他們後來加載,所以我怎麼會附加一個事件給他們?
第二次編輯: 好吧,我已經修復它,不知道它是否是最好的辦法,雖然。 @Jacob,我決定在代碼執行完之後加載註釋,所以我使用setTimeout添加了代碼,所以這個函數在頁面加載後會運行一秒左右,這是可行的。是否要這樣做,所以如果我錯了或者想看,請糾正我 代碼。
存在於DOM中的意見在最初加載頁面?如果不是,那麼你將不會附加'mousemove'事件(這是'if'語句所控制的)。 – Jacob 2011-05-16 21:10:25
嘗試把這整個事件放在jQuery onload執行中:''jQuery(function(){/ * All code goes here * /});' – 2011-05-16 21:15:15
請記住,mousemove事件不是一次性事件,它被稱爲每一個瀏覽器檢測到鼠標移動的時間。所以有點擺動鼠標可能會輕鬆地運行你的代碼幾百倍。 – DarthJDG 2011-05-16 21:26:07